go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。
使用go module进行包管理,就不用非得在GOPATH下面开发(之前是需要在gopath/src/),可以在任意位置进行Go 开发,提高了灵活性。
以下,写写自己对go module的理解。
假设写了一个包 package1,这时候在另外的包package2中要调用这个包的函数。
那么可以在package1 目录下,使用go mod init package1,会在目录下生成go.mod文件,这时候,go.mod文件表明package1包对外显示的包名就是package1.
module package1
go 1.14
这时候在package2中,也使用go mod init package2,同样生成一个go.mod文件,如果package2要用到package1,则可以在这个文件中增加。
module package2
go 1.14
require “package1” v0.0.0
replace “package1” => “…/mypackage1”
反正,就是使用go mod init 设置当前包对外显示的包名字,然后调用者在自己包下的go.mod文件声明需要导入的包名字以及对应的包的目录即可。
require “package1” v0.0.0 : 表示本包需要用到这个包的一些接口
replace “package1” => “…/mypackage1” : 指明这个包在本地存放的路径,这样Go才知道去哪个目录找,如果不指定,go会去默认的环境变量的路径下寻找,没有则报错了。