8
2

More than 3 years have passed since last update.

vscode-go で Workspace ごとに Go のバージョンを使い分ける

Last updated at Posted at 2021-05-14

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 と表示されています。

vscodego_1.png

先ほどインストールした Go 1.11.13 にバージョンを切り替えてみましょう。
ステータスバーの Go 1.16.4 の部分をクリックします。

下図のようにコマンドパレットが表示されるので Choose Go Environment を選択します。

vscodego_2.png

今度は利用できる Go のバージョン一覧が表示されるので、先ほどインストールした Go 1.11.13 を選択します。

vscodego_3.png

画面の指示に従ってリロードします。

vscodego_4.png

ステータスバーの表示が Go 1.11.13 に変わりました :tada:

vscodego_5.png

試しに次のようなテストをコマンドパレットから Go: Test File を叩いて実行してみます。

main_test.go
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)
    }
}

vscodego_6.png

ばっちり Go 1.11.13 で実行されていることが確認できました。

素晴らしいことにターミナルにもいい感じに PATH が通されていて、go コマンドで Go 1.11.13 が使えるようになっています。
(最近の VSCode はリロードしてもターミナルのプロセスが死なずに維持されるので、Go のバージョンが変わっていない場合はターミナルを閉じて再起動しましょう)

vscodego_7.png

選択した Go のバージョンは Workspace (フォルダ) 単位で記憶されるため、VSCode を閉じても再度開けば Go 1.11.13 が使える状態になっています。
デフォルトのバージョンに戻したい場合は Choose Go EnvironmentClear selection を選択します。

vscodego_8.png

また、直近 2 つ分のメジャーリリースの最新バージョンであれば VSCode 上で直接インストールすることも可能です。
Choose Go Enviromnentgo get golang.org/dl/go1.x.x と表示されている Go バージョンを選択することで対象のバージョンがインストールされます。

vscodego_9.png

参考

8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2