go の開発環境を作る。1,2 年触ってなかった。今はどうなってるのか。。
Install
とりあえずバージョン管理したくなるやろなのでgoenv
を入れる。
homebrew で入れると古いバージョンになる問題あるとのことなので、git で入れる。
Installation | goenv
git clone https://github.com/syndbg/goenv.git ~/.goenv
zsh 環境なので.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
はい。これで開発スタートできる。