第1回大井町goへ行ってきました
Twitterでたまたま見かけた大井町goへ行ってきました。
- 弊社でgoを使う人が増えていて、ゴールーチンの威力について語られることがあるけど、使ってないからピンとこない。興味はある。
- 次に静的言語を覚えるならgoにしようかなという迷い
というあたりがモチベーションです。
A Tour of Goを以前途中で投げ出したので、先月入手したMacには環境すらありませんでした。事前に急いで作りました。
会場ではもくもくとTourをやりつつ、分からないところを相談し合ったりしました。
お邪魔させてくださったオーマイグラスさん、参加者の皆さん、ありがとうございました。
以下、覚え書きです。
direnvのインストール
こんぴろさんの記事が参考になりました。
インストールログ。
$ brew install direnv ==> Downloading https://github.com/zimbatm/direnv/archive/v2.3.0.tar.gz ######################################################################## 100.0% ==> make install DESTDIR=/usr/local/Cellar/direnv/2.3.0 ==> Caveats At the END of your ~/.bashrc or ~/.zshrc, add the following line: eval "$(direnv hook $0)" See the wiki for docs and examples: https://github.com/zimbatm/direnv/wiki/ ==> Summary 🍺 /usr/local/Cellar/direnv/2.3.0: 7 files, 3.5M, built in 3 seconds
Goのインストール
- homebrewでgoをインストール
- Hello World
ここまでは次のページを参考にしました。
ただし、ドキュメントは、MacアプリのDashにインストールしました。また、エディタ設定はviを使いたいので、次の記事を参考にしました。(上の記事ではEmacsです)
インストールログ。
$ brew install go ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/go-1.3.mave ######################################################################## 100.0% ==> Pouring go-1.3.mavericks.bottle.tar.gz ==> Caveats As of go 1.2, a valid GOPATH is required to use the `go get` command: http://golang.org/doc/code.html#GOPATH `go vet` and `go doc` are now part of the go.tools sub repo: http://golang.org/doc/go1.2#go_tools_godoc To get `go vet` and `go doc` run: go get code.google.com/p/go.tools/cmd/godoc go get code.google.com/p/go.tools/cmd/vet You may wish to add the GOROOT-based install location to your PATH: export PATH=$PATH:/usr/local/opt/go/libexec/bin Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completion has been installed to: /usr/local/share/zsh/site-functions ==> Summary 🍺 /usr/local/Cellar/go/1.3: 4339 files, 114M
確認。
$ go version go version go1.3 darwin/amd64
実体は/usr/local/Cellar/go/1.3/以下にインストールされて、/usr/local/bin/goからシンボリックリンクが張られます。
$GOROOTの設定は不要?
Note: GOROOT must be set only when installing to a custom location.
http://golang.org/doc/install#install
公式ドキュメントによると、/usr/local/go以外の場所にバイナリを解凍した場合にだけ、設定する必要があるそうです。
Goの環境構築系の記事で、Goリポジトリに含まれるVimの設定を使うために、$GOROOT/misc/vimをパスに追加する記述がよくありますが、かならずしもGOROOTを定義する必要はありません。
また、次の記事でも、Goを自分でビルドした場合は$GOROOTの設定が不要だと説明されています。(今回はhomebrew経由でインストールしていますが)
自分は最初、direnvで$GOROOTを雑に設定したせいで、本来のパスを上書きしていました。不要だったみたいです。
実は必要だという話がありましたら、お教えください。
ArrayとSlice
A Tour of Go だけやってると見落としますが、Array型がちゃんとあります。
しかし、GoのArrayは、他の言語でいうところのArrayとだいぶ違うそうですね。
ArrayとSliceの作り方はよく似ていますが、要素数を渡して生成するとSliceになります。(make関数を使った方がいいのかも)capという概念はSliceにだけあります。
SliceはArrayへの参照だから、Sliceを使っておくのがよいらしい?です。
(まだresliceがよく分かってない)
話題にでたもの
- リファレンスのリスト(http://stackoverflow.com/questions/19549198/go-language-tutorials-or-books)
- ghqとかpecoとかik(https://github.com/moriyoshi/ik)
- Go Playground(https://github.com/moriyoshi/ik)が便利
- Dashのフル機能版には、ドキュメント内のサンプルコードをその場で実行する機能がある(自分が使っているのが機能制限版だと初めて知った)