[Golang] go modules使用

關於go modules的使用外面的教程實在太多了,我這裏只講下我本身使用的三種情形。git

 

準備工做:

一、新建個文件加gomod_test。github

二、在這個目錄輸入命令 go mod init gomod_testui

 

情形一:比較常見的狀況,引用github的包

比方我有以下代碼 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

相關文章
相關標籤/搜索