go mod 是官方go的管理依赖的工具,集成在go1.11版本以上。基于最小版本选择(mvs)管理。
1. 初始化
go mod init
go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。
2. 编译
go build ./...
若出现 fatal: could not read Username for 'https://gitlab.com': terminal prompts disabled Confirm the import path was entered correctly. 的错误,则改命令为:
GIT_TERMINAL_PROMPT=1 go build ./...
3. go get
在build时,go module模块会自动将依赖的包缓存在$GOPATH/pkg/cache/download下,由于国际知名原因,golang.org域名被屏蔽,会出现诸如 go: converting vendor/vendor.json: stat google.golang.org/grpc/serviceconfig@92635fa6bffd9db9b2cca8ce8f978bfebabd9c29: unrecognized import path "google.golang.org/grpc/serviceconfig" (https fetch: Get https://google.golang.org/grpc/serviceconfig?go-get=1: dial tcp 216.239.37.1:443: connect: connection refused) 这样的错误。
因此,对于一些golang的官方包,可以直接在github镜像库里git clone下来之后,手动放入缓存的那个路径,然后重启vscode重新build即可。
Tips
- 解决网络问题
go env -w GOPROXY=https://goproxy.cn,https://gocenter.io,https://goproxy.io,direct