關於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