Linux/Mac下如何优雅的切换golang版本

先介绍3个比较常规的方法

  1. 通过go get来下载,如go get https://golang.org/dl/go1.16
  2. 通过goup切换
  3. 使用g https://github.com/voidint/g
  4. 使用goland,直接在设置里切换(只在goland里面生效)

上面的方法都很好,但是环境变量这种东西看不见摸不着的,总是让我感觉不踏实,下面介绍一下我个人使用的切换golang版本方法

一. 首先下载希望切换的版本,解压到/usr/local/目录下,并且把文件名改成和对应go版本一样,比如/usr/local/go1.18/usr/local/go1.19

Mac版本可以到这里来下载免安装版,记得下载后缀是.tar.gz的

二. 创建文件/usr/local/go_switch.sh,文件位置并不是强制的,但是建议放在这里,方便管理,文件内容为

#!/bin/bash

VERSIONS=("1.18" "1.19")

now_version=$1

if [[ "${VERSIONS[@]}" =~ $now_version ]];then
  echo "开始切换go版本为: $now_version"
  ln -sfn /usr/local/go$now_version /usr/local/go
else
  echo "不支持的版本"
fi

大概说一下脚本的意思,首先声明了一个所有已下载版本的数组,脚本接收一个版本参数,下一步判断版本是否支持,如果支持,就创建一个/usr/local/go的短链接.

三. 在你使用的shell软件中添加环境变量,我的为~/.zshrc,内容为:

export GOROOT=/usr/local/go
export GOPATH=/home/liyang/go
export GOPROXY=https://proxy.golang.com.cn,direct

export PATH=$PATH:$GOROOT/bin

四. 切换版本

> sudo /usr/local/go_switch.sh 1.19
开始切换go版本为: 1.19

> sudo /usr/local/go_switch.sh 1.15
不支持的版本