go get 時の `import path does not begin with hostname` でハマった話

1年近くGo書いててGOROOTの設定が間違ってたっていう話を書くのもお恥ずかしい話ではあるんですが備忘録のため

環境としては

  • brewでgoを入れている
  • gorootをテキトーにしか設定してなかった($HOME/goみたいな)

エラーの内容は go get コマンドを叩くと

package bufio: unrecognized import path "bufio"
# 以下標準packageのimportに失敗する

というエラーでした。

普段app-engineしかいじってないので正規のgoをいじってpackageを入れようとしたら入らなくて色々こねくり回してました。 最終的には brew で goを入れた場合のlibexecのpathをgorootに指定することで解決しました。

標準packageのところでミスっているのでGOROOT周りの設定がおかしいのでは?っていうところにはすぐ行き着いたのですが、それにしても設定の仕方がおかしかったところで大分時間を食ってしまいました...
local環境も定期的にメンテしておかないと行けないなーと反省しました。

以下 fishの設定

# go
set -x GOROOT /usr/local/opt/go/libexec
set -x GOPATH $HOME/.go
set -x PATH $GOPATH/bin $GOROOT/bin $PATH