Go modules 从入门到放弃 (go1.11)

一、使用方式

  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
    原文作者:UULU
    原文地址: https://www.jianshu.com/p/e8159888bb47
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞