第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のインストール

ここまでは次のページを参考にしました。

ただし、ドキュメントは、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がよく分かってない)

話題にでたもの

成果

こんなところでしょうか。おつかれさまでした。