“go1.16.9” does not match go tool version
Go のコンパイル時にエラーが出て少し悩んだ。
# internal/unsafeheader
compile: version "go1.16.9" does not match go tool version "go1.17"
# runtime/internal/sys
compile: version "go1.16.9" does not match go tool version "go1.17"
# internal/race
compile: version "go1.16.9" does not match go tool version "go1.17"
# unicode/utf8
compile: version "go1.16.9" does not match go tool version "go1.17"
goenv を利用していて、goenv global 1.16.9
と指定しているのに、go1.17 が go tool で利用されている。
こういうときは、go env
コマンドで go がどのような環境変数を読み込んでいるか確認する。
go env | grep GOVERSION
GOVERSION="go1.17"
たしかに、go1.17 になっているが、インストールした記憶がない…
色々と考えてみたが、自分が go をインストールする経路は、goenv か brew しかないと考え、brew list
をすると、go がインストールされていた。
しかも、brew update
で go のバージョンが上げられたようだった。
ということで、 brew uninstall go
して brew から go をアンインストールし、goenv rehash
go env | grep GOVERSION
GOVERSION="go1.16.9"
無事に設定されて、コンパイルもできるようになった。
brew だと他のツールに巻き込まれて go がインストールされる場合もあるから、注意が必要かもしれない。