go语言的包名一般是对应源代码文件的文件夹名,并且包内的代码文件的package xxx
最好是包名本身。比如我建立了一个testPackage包(文件夹),在该包内编写的程序都以package testPackage
开头:
这样在main.go或者其他包中调用Hello()时,即可通过import
关键字引入testPackage包,并找到对应的路径和函数。此时执行go run main.go
即可成功运行代码,如下:
上面是常见的调用思路。
但是,一般情况下我们的main.go都是在项目的根目录中,比如我这个goMisc目录为项目的根目录,当根目录中有其他go源文件,并且main.go需要调用该文件中的函数时,就不能直接拿常用的方法实现了。
在main.go同级目录下新建一个test.go,并构造一个Test()函数
然后在main.go中调用Test(),编译器不会提示有错误,但是使用go run执行main.go时会报错
可以用三种方式解决:
- 在项目根目录的命令行中执行
go run .
- 执行
go run main.go test.go
- 如启用 Mod模式,先编译一个 mod文件出来后。执行方式改成“软件包”路径改成mod里的项目名称,然后用IDE右上角的执行来执行软件包
如果mod模式报错出问题:
新创建的golang项目,使用 go mod init 命令时出现 cannot determine module path for source directory xxxxxxx (outside GOPATH, module path must be specified)
解决方案:
这是因为go mod init 初始化项目时,需要定义一个 module ,我们打开一个 go.mod 文件,就会发现第一行就有
module 项目名
因此,在执行 go mod init 时需要定义 module,如:
go mod init 项目名