はじめに
Golang環境は、職場でも数年利用していました。 Macが新しくなった + 日に日に新しくなっているのでこれを機にlocal環境を作りなおしてみるメモです。
アジェンダ
- 今回の構成
- goenvでgoいれる
- direnvでlocal設定する
- go modでpackage管理する
- 実行してみる
1. 今回の構成
場所はどこでも良いのですが、
以下にsampleをおくと仮定して進めます。
$ cd $HOME/sample $ pwd $HOME/sample
2. goenvでgoいれる
goenvは、go言語のバージョンを管理するものです。
rbenvやnodebrewを使ってる人には名前を見たらすぐわかりますね!
goenvのinstall
$ go version go version go1.12.4 darwin/amd64 $ brew install goenv $ goenv versions * system (set by /Users/tweeeety/.goenv/version)
goenvの設定
$ vim ~/.bashrc -- 追記 -- # for goenv export GOENV_ROOT="$HOME/.goenv" export PATH="$GOENV_ROOT/bin:$PATH" eval "$(goenv init -)" ----------
goenvでgoの任意のversionをインストール
$ goenv install --list Available versions: 1.2.2 1.3.0 ~ 省略 ~ 1.11.3 1.11.4 1.12beta1 $ goenv install 1.11.4 Downloading go1.11.4.darwin-amd64.tar.gz... -> https://dl.google.com/go/go1.11.4.darwin-amd64.tar.gz Installing Go Darwin 64bit 1.11.4... Installed Go Darwin 64bit 1.11.4 to /Users/tweeeety/.goenv/versions/1.11.4 # $HOME/sample配下を1.11.4にする $ goenv local 1.11.4 $ ls -al total 8 drwxr-xr-x 3 tweeeety tweeeety 96 6 23 02:47 . drwxr-xr-x 6 tweeeety tweeeety 192 6 23 02:46 .. -rw-r--r-- 1 tweeeety tweeeety 7 6 23 02:47 .go-version $ cat .go-version 1.11.4
2. direnvでlocal設定する
direnvのinstall
direnvのinstallは以下をご参考ください
direnvの設定
$ pwd $HOME/sample $ direnv edit . -- vi追記 -- export GO111MODULE=on export GOPATH=$PWD/go ------------ # 念の為 $ direnv allow
3. go modでpackage管理する
package管理には
これまでglide
やらdep
やらがいましたが、
これからはGo Modules
らしいので使ってみます。
go mod initでgo.modを作る
go 1.12からはデフォルトだけど、
go 1.11ではexport GO111MODULE=on
とすることで使用できるようです。
今回は、上記のdirenv
にて、
特定のdirに対してはexportするように設定したものですね。
go mod init hello
を打つと、
go.mod
というファイルができます。
$ go mod init hello go: creating new go.mod: module hello
hello.goを作る
rsc.io/quote
は、 Go Modulesの説明のために作られたパッケージのようなのでそれを使います。
package main import ( "fmt" "rsc.io/quote" ) func main() { fmt.Println(quote.Hello()) }
go buildでpackageのinstallも行う
go build
を打つと利用しているpackageをinstallまでしてくれます。
$ go build go: finding rsc.io/quote v1.5.2 go: downloading rsc.io/quote v1.5.2 go: extracting rsc.io/quote v1.5.2 go: finding rsc.io/sampler v1.3.0 go: finding golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c go: downloading rsc.io/sampler v1.3.0 go: extracting rsc.io/sampler v1.3.0 go: downloading golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c go: extracting golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c $ cat go.mod module hello go 1.12 require rsc.io/quote v1.5.2
また、この時点で以下のような構成になっています
$ pws $HOME/sample $ tree . -L 4 . ├── go │ └── pkg │ └── mod │ ├── cache │ ├── golang.org │ └── rsc.io ├── go.mod ├── go.sum ├── hello └── hello.go 6 directories, 4 files
4. 実行してみる
$ go run hello こんにちは世界。
無事、実行できました!
おわり
Go Modules
便利\(^o^)/