[Golang] go modules使用


關於go modules的使用外面的教程實在太多了,我這里只講下我自己使用的三種情形。

 

准備工作:

1、新建個文件加gomod_test。

2、在這個目錄輸入命令 go mod init gomod_test

 

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

比方我有如下代碼 main.go

package main

import (
    "fmt"

    "github.com/name/foo"
)

func main() {
      foo.Foo()    
}

直接命令 go mod tidy,然后就可以go build編譯

 

情形二:引用自己工程里的包

目錄結構如下 

gomod_test

  |-----main.go

  |-----mypackage

      |---------mypackage.go

 

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替換成本地包。

1、首先我需要把github.com/name/mylib代碼下載下來,你可以直接下載zip,也可以clone,到工程根目錄

2、編輯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()
}

 

其他

1、如果想把將依賴復制到vendor下可以用go mod vendor命令

2、如果想用vendor里的依賴庫編譯可執行文件可以用命令 go build -mod=vendor


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM