Go modules 使用

Go modules 使用

 

一、使用方式

  1. 首先完全開啓 go modules
    三種模式: on/auto/off,默認爲 auto: $GOPATH下的項目不開啓,非$GOPATH下的開啓
$ export GO111MODULE=on
  1. 在項目裏初始化 go.mod
$ go mod init my-project-package-name
  1. 按需替換被牆的 module 地址
$ vi go.mod
replace (
    cloud.google.com/go => github.com/GoogleCloudPlatform/google-cloud-go latest
    golang.org/x/crypto => github.com/golang/crypto latest
    golang.org/x/net => github.com/golang/net latest
    golang.org/x/sync => github.com/golang/sync latest
    golang.org/x/sys => github.com/golang/sys latest
    golang.org/x/text => github.com/golang/text latest
    google.golang.org/appengine => github.com/golang/appengine latest
)
  1. 自動下載依賴的 module(同時刪除掉無用的)
$ go mod tidy -v
  • -v 囉嗦模式
  • 完成後,生成go.modrequire部分,和go.sum文件
  • 可以在.gitignore中忽略掉go.sum,只需要保留go.mod
  • 依賴的 module 被文件下載到$GOPATH/pkg/cache/$GOPATH/pkg/mod/文件夾下了

二、問題修復

通過開啓 useLanguageServer,修復 vscode 代碼提示、跳轉到定義等問題

$ go get github.com/saibing/bingo
{
  "go.alternateTools": {
    "go-langserver": "bingo"
  },
  "go.languageServerExperimentalFeatures": {
    "format": true,
    "autoComplete": true
  },
  "go.useLanguageServer": true
}

參考文檔

三、切換回 Vendor 模式

目前 go mod 各方面支持還不夠完善,如果想切換回 vendor 模式,可以通過下面兩種方式

# 臨時切換
$ go mod vendor
$ go run -mod=vendor main.go

# 或設置成全局環境變量
# export GOFLAGS=-mod=vendor
$ go run main.go

四、後續

用了一段時間 go mod 後,發現 vscode 目前的支持非常差,代碼提示方面存在各種問題,提示速度也慢了很多,難以忍受,所以選擇暫時放棄使用,待完善後再來。
目前切換成 dep 方式管理依賴包

# 初始化
$ dep init

# 整理依賴包
$ dep ensure

# 更新依賴版本
$ dep ensure -update

 

簡書鏈接:https://www.jianshu.com/p/e8159888bb47

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章