一键切换Golang版本

将各个版本统一在固定目录下,如:

1
2
3
4
5
6
/usr/local/
├── ......
├── go -> /usr/local/go1.13.15
├── go1.16.3
├── go1.17.6
├── ......

然后在 bash启动脚本(比如Linux中为~/.bashrc) 中添加如下函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function gouse() {
if [[ $# -eq 0 ]]
then
echo "usage $FUNCNAME <go version(1.12,1.13,1.14,...)>"
return
fi
local USER_LOCAL_DIR=/usr/local
local targetGoVersion=$1
local choice
for GoVersion in ${USER_LOCAL_DIR}/go1.1*
do
if [[ ${GoVersion} =~ ${targetGoVersion} ]]
then
read -p "Shall I use ${GoVersion}? (y/Y | n/N) " -t 5 choice
choice=$(echo $choice | tr 'A-Z' 'a-z')
if [[ ${choice:0:1} == "y" ]]
then
sudo rm -rf ${USER_LOCAL_DIR}/go
sudo ln -sf ${GoVersion} ${USER_LOCAL_DIR}/go
return
fi
echo
fi
done
echo "${targetGoVersion} not found in ${USER_LOCAL_DIR}"
}

source ~/.bashrc 使生效后,如果想要切换golang到 go1.16,直接如下执行命令即可

1
2
3
4
$ gouse 1.16
Shall I use /usr/local/go1.16.3? (y/Y | n/N) y
$ go version
go version go1.16.3 linux/amd64