概要
Go言語を扱う際に、goenvを導入しようとしたら、古いバージョンしか見つからず詰まった話
homebrewでgoenvをダウンロード
macだしhomebrewでいいかなと思い、
$ brew install goenv
無事にインストールは完了
インストールできるgolangのバージョンを確認
$ goenv install -l
=> Available versions:
1.2.2
1.3.0
1.3.1
:
:
1.11.0
1.11beta2
1.11beta3
1.11rc1
1.11rc2
1.11.1
1.11.2
1.11.3
1.11.4
1.12beta1
あれ?1.15.2がstable versionになってたから入れたいのにリストにない
あーgoenvのバージョン古いからか
$ brew upgrade goenv
=> Warning: goenv 1.23.3 is already installed
ん?どういうこと?
goenvでバージョン管理
homebrewじゃなくてgitでインストール
1.23系から2.0系にする場合は、git cloneで入れればよいという記事がちらほらあったので、gitでインストールする
公式に倣いインストール
$ git clone https://github.com/syndbg/goenv.git ~/.goenv
PATHを通す
export GOENV_ROOT=$HOME/.goenv
export PATH=$GOENV_ROOT/bin:$PATH
eval "$(goenv init -)"
export PATH="$GOROOT/bin:$PATH"
export PATH="$PATH:$GOPATH/bin"
PATHを通したところで、コードを実行
$ go run main.go
main.go:1499:2: package myProject/mylib is not in GOROOT (/myProject/mylib)
main.go:1500:2: package myProject/mylib/hogehoge is not in GOROOT (myProject/mylib/hogehoge)
$ go build
go: cannot find main module; see 'go help modules'
runもbuildもうまく動かない
## gomod
Goのコードはライブラリも含めてすべて$GOPATH/src以下に置くという約束になっている。
将来の Go 1.12 からこのやり方を改め、$GOPATH/srcやvendorは廃止となりGo Modulesという物を採用する事になった。
今回は1.15.2を使用しているので、gomodを作成する必要があるみたい
golangの設定変更
go env -w GO111MODULE=on
gomod作成
プロジェクトの直下で
$ go mod init myProject
$ go build
$ go run main.go
=> Human!!
無事動いた