golang 在 Go 1.18中提供了泛型特性,相信很多goper小伙伴的跃跃欲试想要尝鲜了,但是安装新版本golang的同时又希望保留老的版本,以免影响现有的稳定代码仓库。
为了解决goalng版本升级和本地这个多版本管理的问题,开发了一个安装脚本,用于快速进行版本升级和多版本的管理。
1、brew安装方式
如果你习惯于使用 brew 安装代码,那么使用这个脚本。
#!/bin/bash
GO_VERSION=$1
if [ $1"" == "" ]
then
echo "please confirm your go version, brew search go | grep go@"
exit 1
fi
echo "start install go@${GO_VERSION}"
brew update
brew install go@${GO_VERSION}
echo "start change link"
brew unlink go
brew link go@${GO_VERSION}
echo "start change go env config"
echo "install go@${GO_VERSION} ok"
search go | grep go@
这种安装方式虽然相对简单,但是并不可以选择具体的小版本更新,例如指定安装 go@1.18.3这样的版本号。截止到2023年2月10日,可选的版本如下:
- go@1.13
- go@1.14
- go@1.15
- go@1.16
- go@1.17
- go@1.18
此外,最新的 go@1.19.5 也不支持 brew 方式的安装。
因此,如果我们需要更加灵活的指定安装版本,或者说需要安装更新的版本,就可以使用下面这种源码安装的方式。
2、源码安装的方式
#!/bin/bash
GO_VERSION=$1
if [ $1"" == "" ]
then
echo "please confirm your go version, https://go.dev/dl/"
exit 1
fi
echo "start install go@${GO_VERSION}"
wget https://go.dev/dl/go${GO_VERSION}.darwin-amd64.tar.gz
sudo mkdir /usr/local/go@${GO_VERSION}
sudo tar -C /usr/local/go@${GO_VERSION} -xzf go${GO_VERSION}.darwin-amd64.tar.gz
rm go${GO_VERSION}.darwin-amd64.tar.gz
echo "start change link"
rm /usr/local/bin/go
rm /usr/local/bin/gofmt
ln -s /usr/local/go@{GO_VERSION}/go/bin/go /usr/local/bin/go
ln -s /usr/local/go@{GO_VERSION}/go/bin/go /usr/local/bin/gofmt
echo "start change go env config"
echo "install go@${GO_VERSION} ok"
可以通过 https://go.dev/dl/ 查询当前可安装的版本。如果需要回退到历史版本,只需要手动删除软链,并创建新软链指定到需要的版本即可。