关于go modules的使用外面的教程实在太多了,我这里只讲下我本身使用的三种情形。git
一、新建个文件加gomod_test。github
二、在这个目录输入命令 go mod init gomod_testui
比方我有以下代码 main.gospa
package main import ( "fmt" "github.com/name/foo" ) func main() { foo.Foo() }
直接命令 go mod tidy,而后就能够go build编译code
目录结构以下 blog
gomod_test教程
|-----main.goip
|-----mypackageget
|---------mypackage.goit
main.go要引用mypackage包,代码改为以下。
注意 "gomod_test/mypackage",gomod_test是咱们上面go mod init gomod_test的模块名,mypackage是你的包目录
package main import ( "fmt" "gomod_test/mypackage" "github.com/name/foo" ) func main() { foo.Foo() mypackage.XXX() }
这种状况的缘由是:比方咱们依赖了github.com/name/mylib这个库,但咱们须要在纯内网无外网环境下编译,这时候go get不到github的代码,就须要咱们用replace替换成本地包。
一、首先我须要把github.com/name/mylib代码下载下来,你能够直接下载zip,也能够clone,到工程根目录
二、编辑go.mod文件加入下面这一行(也能够用go mod edit命令编辑,更正统一些)
replace github.com/name/mylib=> ./mylib
要确保 ./mylib跟你的下载代码的目录一致
目录结构以下
gomod_test
|-----main.go
|-----mypackage
|---------mypackage.go
|-----mylib
|---------mylib.go
main.go 改为以下
package main import ( "fmt" "gomod_test/mypackage" "github.com/name/mylib" "github.com/name/foo" ) func main() { foo.Foo() mypackage.XXX() mylib.DoXXX() }
一、若是想把将依赖复制到vendor下能够用go mod vendor命令
二、若是想用vendor里的依赖库编译可执行文件能够用命令 go build -mod=vendor