compile: version "go *.**" does not match go tool version "go *.**"エラーの解決


compile: version "go *." does not match go tool version "go *."エラー

goの環境構築していてhello worldさせるために、
はりきってgo run hello.goをしたら上記のエラーがでた。

エラー内容

# unicode/utf8
compile: version "go1.16.2" does not match go tool version "go1.17.8"
# runtime/internal/sys
compile: version "go1.16.2" does not match go tool version "go1.17.8"
# internal/unsafeheader
compile: version "go1.16.2" does not match go tool version "go1.17.8"
# internal/race
compile: version "go1.16.2" does not mat

goenvを使っていてgoenv global 1.17.8の指定なのにgo toolでは1.17.8が使用されている?

そういえば環境構築時にbrewインストールしたバージョンとは違うバージョンをgoenv globalで指定していた記憶があったような。

一旦goenvの確認

$ go env | grep GOVERSION
GOVERSION="go1.17.8"

brewでgoをアンインストールする

$ brew uninstall go
Uninstalling /usr/local/Cellar/go/1.17.8... (10,831 files, 566MB)

これで1.17.8とはさよなら。もう一回確認。

$ go env | grep GOVERSION
GOVERSION="go1.16.3"

go1.16.2になってほしいのに今度はなぜかgo1.16.3が設定された。
いっそのことGo関係すべてを削除する。

$ sudo rm -rf /usr/local/go
$ sudo rm -rf /etc/paths.d/go
$ rm -rf ~/go
$ rm -rf ~/.goenv

※他のところを削除しないように注意して実行してね。

Go再インストール

$ brew install go
$ which go
/usr/local/bin/go

PATHは以下のように設定

~/.zshrc
export PATH=$PATH:/usr/local/go/bin

.zshrc再読み込み

$ source ~/.zshrc

仕切り直してgo run hello.goする。

一発でうまくいかなかったのでPC再起動したらできました。