Goの環境構築で詰まったので備忘録
概要
Goの勉強しようとして、まずは動かす環境を作ろうと思ったところで
早速当然のように詰まったので、自分用の備忘録のつもりで書きました。
要約すると
環境変数の設定で詰まったという感じです。
GOPATHとかGOROOTとかのやつです。
起こった事
GoLandを使っていたので
GOPATHとGOROOTをpreferencesで設定した場合は問題なく動いていたのですが
ターミナルからgo run main.go
をすると
パッケージが見つからないというエラーが発生しました。
main.go:4:2: package fmt is not in GOROOT (/Users/{username}/go/src/fmt)
GOPATHとかの設定が
/Users/{username}/Library/Application Support/go
にあるらしいので設定してみたりしたのですがダメでした。
やったこと
install
brew経由でgoを入れました。
brew install go
2022/4/3時点で、v1.18が入りました。
GoLandで動いていたのでその通りのパスでいいのかと思い、同じパスを指定しましたが以下のエラーが発生
warning: GOPATH set to GOROOT (/Users/{username}/go) has no effect
この記事を参考に、パスを変更しいろいろと試したがうまくいかず…。
go env
や、go mod init hogehoge
などのgoコマンド自体は実行ができていましたが
モジュールが読み込めず書いたプログラムが実行されない…。
解決方法
brew経由でインストールされた場合のパスを指定してなかったというのが結論でした。
こちらの記事を参考にしました。
自分はfish shellを使っているので
config.fishに記法を直して、以下を追加
set -x GOPATH $HOME/go
set -x GOROOT /usr/local/Cellar/go/1.18/libexec
set -x GOTOOLDIR /usr/local/Cellar/go/1.18/libexec/pkg/tool/darwin_amd64
set -x PATH $GOPATH/bin $PATH
無事外部モジュールを読み込み実行する事ができました。
恐らくプロジェクトのパス(GOPATH)がうまく繋がっていなかったのかもしれないです。
ただ、GoLandだと動いていたのが少し気がかりです。
まだGoを勉強始めたばかりなので、あまりよく分からず、一先ず動かす事を目標にやりました。
Discussion