わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

Go の複数バージョンを入れる

会社で教えてもらったことあったんだけど、家でやろうと思ったときに資料が会社にしかなくて全然思い出せなかったので自分で調べた。
goenv も使わないし、 brew で古いバージョン入れる方法でもない。
前提として macbrew で go を入れてあるところから始める。別にbrewである必要は実際にはない。

godoc.org

でダウンロードしたい go のバージョンをダウンロードしてくる。
今回 go1.11.13 を使えるようにしたかったので以下のようなコマンドを実行。

$ go install golang.org/dl/go1.11.13

そうすると以下のディレクトリに go1.11.13 が入る。

$ ls -l $GOPATH/bin/go1.11.13
-rwxr-xr-x 1 kimikimi714 kimikimi714 7383724 10 22 23:15 /your/go/path/bin/go1.11.13

このままではまだ使えないのでダウンロードする。

$ $GOPATH/bin/go1.11.13 version
go1.11.13: not downloaded. Run 'go1.11.13 download' to install to /Users/your-user/sdk/go1.11.13

$ $GOPATH/bin/go1.11.13 download
Downloaded   0.0% (    16384 / 120519348 bytes) ...
Downloaded   1.2% (  1407803 / 120519348 bytes) ...
(略)
Downloaded  92.3% (111278907 / 120519348 bytes) ...
Downloaded 100.0% (120519348 / 120519348 bytes)
Unpacking /Users/kimikimi714/sdk/go1.11.13/go1.11.13.darwin-amd64.tar.gz ...
Success. You may now run 'go1.11.13'

これで実行すると動く。

$ $GOPATH/bin/go1.11.13 version
go version go1.11.13 darwin/amd64

このファイルを go として使いたい場合、私はかなり強引だが以下のようにした。

$ brew unlink go
Unlinking /usr/local/Cellar/go/1.13.3... 0 symlinks removed
$ rm /usr/local/bin/go
rm: remove symbolic link '/usr/local/bin/go'? y
$ ln -s $GOPATH/bin/go1.11.13 /usr/local/bin/go
$ go version
go version go1.11.13 darwin/amd64

参考

forum.golangbridge.org

追記: 2022-06-07
Go1.18を使ってる人だと go get ではダメで go install じゃないといけない。

go.dev

この記事によると Go 1.17 から。