go mod版本切换

版本切换

linux

https://github.com/voidint/g

安装

# 建议安装前清空`GOROOT`、`GOBIN`等环境变量
$ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
$ echo "unalias g" >> ~/.bashrc # 可选。若其他程序(如'git')使用了'g'作为别名。
$ source ~/.bashrc # 或者 source ~/.zshrc

查询当前可供安装的stable状态的go版本

$ g ls-remote stable
  1.13.15
  1.14.7

安装目标go版本1.14.7

$ g install 1.14.7
Downloading 100% |███████████████| (119/119 MB, 9.939 MB/s) [12s:0s]
Computing checksum with SHA256
Checksums matched
Now using go1.14.7

查询已安装的go版本

$ g ls
  1.7.6
  1.11.13
  1.12.17
  1.13.15
  1.14.6
* 1.14.7

查询可供安装的所有go版本

$ g ls-remote
  1
  1.2.2
  1.3
  1.3.1
  ...    // 省略若干版本
  1.14.5
  1.14.6
* 1.14.7
  1.15rc1

切换到另一个已安装的go版本

$ g use 1.14.6
go version go1.14.6 darwin/amd64

卸载一个已安装的go版本

$ g uninstall 1.14.7
Uninstalled go1.14.7

mac os

安装

brew install go@1.12
brew install go@1.13

mkdir  /usr/local/Cellar/go //新建go文件夹

mv /usr/local/Cellar/go@1.12/1.12.17 /usr/local/Cellar/go/1.12.17
mv /usr/local/Cellar/go@1.12/1.13.12 /usr/local/Cellar/go/1.13.12  //将两个版本的go复制到Cellar/go文件中

切换

brew switch go 1.12.17

go get失败

# go version 1.12

go list -m -json all
go: go.etcd.io/etcd@v3.3.18+incompatible: unrecognized import path "go.etcd.io/etcd" (https fetch: Get https://go.etcd.io/etcd?go-get=1: net/http: TLS handshake timeout)
go: error loading module requirements

解决办法:

  1. 将go版本切为 1.13 brew switch go 1.13
  2. 配置goproxy go env -w GOPROXY=https://goproxy.cn,direct。如果配置失败warning: go env -w GOPROXY=... does not override conflicting OS environment variable,尝试unset GOPROXY后再重新配置
  3. 重新执行go list -m -json all

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。