vscode-go を使って Workspace (フォルダ) ごとに Go のバージョンを使い分ける方法をご紹介します。
goenv のようなツールを使用しなくても Go と vscode-go の機能だけで簡単に複数バージョンを使い分けることができます。
※ こちらの記事に記載されている内容は vscode-go v0.25.0 時点の情報になります。
Go をインストールする
Go がまだインストールされていない場合は公式のインストールガイドに従ってインストールしておきます。
今回は 2021 年 5 月現在最新の 1.16.4 をインストールしました。
$ go version
go version go1.16.4 linux/amd64
また、$GOPATH/bin
にも PATH を通しておいてください。
$ export PATH=$PATH:$(go env GOPATH)/bin
追加で別のバージョンの Go をインストールする
複数バージョンの Go をインストールして管理するとなると goenv を使うのが定番ですが、実は Go の標準機能でもある程度可能です。
例として Go 1.11.13 をインストールしてみます。
$ go get golang.org/dl/go1.11.13
$ go1.11.13 download
Downloaded 0.0% ( 3266 / 121068518 bytes) ...
Downloaded 2.9% ( 3489776 / 121068518 bytes) ...
... (略) ...
Downloaded 99.9% (120994352 / 121068518 bytes) ...
Downloaded 100.0% (121068518 / 121068518 bytes)
Unpacking /home/frozenbonito/sdk/go1.11.13/go1.11.13.linux-amd64.tar.gz ...
Success. You may now run 'go1.11.13'
これで go1.11.13
コマンドで Go 1.11.13 を使うことができるようになりました。
$ go1.11.13 version
go version go1.11.13 linux/amd64
このとき Go 1.11.13 は $HOME/sdk/go1.11.13
以下にインストールされています。
$ go1.11.13 env GOROOT
/home/frozenbonito/sdk/go1.11.13
VSCode で Go のバージョンを切り替える
vscode-go がインストールされた VSCode で Go プロジェクトを開くと、画面下部のステータスバーに vscode-go で使用される Go のバージョンが表示されます。
今回はデフォルトのバージョンとして 1.16.4 をインストールしたので Go 1.16.4
と表示されています。
先ほどインストールした Go 1.11.13 にバージョンを切り替えてみましょう。
ステータスバーの Go 1.16.4
の部分をクリックします。
下図のようにコマンドパレットが表示されるので Choose Go Environment
を選択します。
今度は利用できる Go のバージョン一覧が表示されるので、先ほどインストールした Go 1.11.13 を選択します。
画面の指示に従ってリロードします。
ステータスバーの表示が Go 1.11.13
に変わりました
試しに次のようなテストをコマンドパレットから Go: Test File
を叩いて実行してみます。
package main_test
import (
"runtime"
"testing"
)
func TestGoVersion(t *testing.T) {
version := runtime.Version()
expected := "go1.11.13"
if version != expected {
t.Errorf("version is not %s, but %s", expected, version)
}
}
ばっちり Go 1.11.13 で実行されていることが確認できました。
素晴らしいことにターミナルにもいい感じに PATH が通されていて、go
コマンドで Go 1.11.13 が使えるようになっています。
(最近の VSCode はリロードしてもターミナルのプロセスが死なずに維持されるので、Go のバージョンが変わっていない場合はターミナルを閉じて再起動しましょう)
選択した Go のバージョンは Workspace (フォルダ) 単位で記憶されるため、VSCode を閉じても再度開けば Go 1.11.13 が使える状態になっています。
デフォルトのバージョンに戻したい場合は Choose Go Environment
で Clear selection
を選択します。
また、直近 2 つ分のメジャーリリースの最新バージョンであれば VSCode 上で直接インストールすることも可能です。
Choose Go Enviromnent
で go get golang.org/dl/go1.x.x
と表示されている Go バージョンを選択することで対象のバージョンがインストールされます。
参考