go の開発環境を作る。1,2 年触ってなかった。今はどうなってるのか。。
Install
とりあえずバージョン管理したくなるやろなのでgoenvを入れる。
homebrew で入れると古いバージョンになる問題あるとのことなので、git で入れる。
Installation | goenv
git clone https://github.com/syndbg/goenv.git ~/.goenvzsh 環境なので.zshenvに以下を記述
export GOPATH=$HOME/go
export GOENV_ROOT=$HOME/.goenv
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"
export PATH=$PATH:$GOPATH/bin
export PATH="$GOROOT/bin:$PATH"
export PATH="$PATH:$GOPATH/bin"確認
type -p goenv # bash -> which goenv
goenv is /Users/gollowars/.goenv/bin/goenv
goenv install -l # インストール可能な version のリストを表示
goenv install 1.16.0 # とりあえず最新を install
goenv global 1.16.0 # てな感じなのでnodenvとかrubyenvとかpyenvを使ってる人からするとおなじみOK
Package 管理
go でも npm 的なのがあるが、以前はdepを使っていた。今は GoModules がスタンダード。2021 現在ネットの情報がとっちらかっているけどGoModulesを使え!とのこと。
go modules が登場したのでプロジェクトの場所は$GOPATH/src配下でなくてよくなったとのこと。
これは地味にかなり嬉しいぞ!
環境変数に以下を追加すると module モードで動くらしいが、1.13 以降はデフォなので設定不要
export GO11MODULE=onなんやかんやここにまとめられているので読む 他言語から来た人が Go を使い始めてすぐハマったこととその答え
プロジェクト初期化
go mod init github.com/${GITHUB_USER}/${PROJECT_NAME}
# ex ) go mod init github.com/gollowars/test-go初期化はgo mod init ここに名前
とのことだけど名前のところには慣習的に repository を記述するぽい。
.
├── Makefile
├── go.mod
├── hoge
│ └── hoge.go
└── main.go最小構成だとこんな感じ
hoge/hoge.go
package hoge
import "fmt"
func PrintHoge(){
fmt.Println("hogehogehoge machine")
}main.go
package main
import "github.com/gollowars/test-go/hoge"
func main(){
hoge.PrintHoge()
}go run ./main.go
hogehogehoge machineはい。これで開発スタートできる。