初めての Go #golang
だいぶ今更感がありますが、重い腰を上げてようやく Go 言語を触ってみることにしました。
主に下記記事を足がかりに学習を進めています。
私的メモ: golang 学習 - A Tour of Go をなぞる
開発環境は MacOS Mavericks で、エディタは Vim です。
以下、インストールから、初めてのライブラリ作成までのログです。
(1) Go Install / Configure
公式ページからMac用のパッケージをダウンロードしてインストール。
Downloads - The Go Programming Language
インストール後、ターミナルを起動し直すと、/usr/local/go/bin に PATH が通っていた。
% which go /usr/local/go/bin/go % go env GOARCH="amd64" GOBIN="" GOCHAR="6" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="" GORACE="" GOROOT="/usr/local/go" GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64" CC="clang" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common" CXX="clang++" CGO_ENABLED="1"
How to Write Go Code - The Go Programming Language に従って、GOPATH を設定する。
こんな感じで↓
# Go export GOPATH=$HOME/my/go export PATH=$PATH:$GOPATH/bin
これによって、Go のパッケージを go get
で $GOPATH
下に取ってこれたり、コンパイル後のバイナリが $GOPATH/bin
下に配置されるようになる。
(2) Vim 用の環境設定
チュートリアルをやってて、途中でつらくなったので環境整備した。
Vim が最新版だとシンタックスハイライトぐらいは効くっぽいが、手元の Mac ではインデントすら効かなかった。
vimのGoサポートが手厚くて打ち震えている 辺りを参考にした。
とりあえず vim-jp/vim-go-extra
と google/vim-ft-go
を入れておけばよさそう。
ついでに今まで使ってなかったファイラのプラグインとして、NERDTree を導入してみる。
vim-plugin NERDTree で開発効率をアップする!
:NERDTreeToggle
なんて毎回打ってられないだろうから、キーマッピングもしておく。
.vimrc に下のように書き足した。
NeoBundle 'scrooloose/nerdtree' " for golang NeoBundle 'vim-jp/vim-go-extra' NeoBundle 'google/vim-ft-go' " key map nnoremap ,t <ESC>:NERDTreeToggle<Return>
一度 Vim を再起動して、:NeoBundleInstall
でプラグインをインストール。
その後、.go ファイルを開くとカラフルになっていい感じだった。
,t
の NERDTree もいい感じ。
1つ目の記事にあった godoc, golint などのツールも入れておくとよさそうだけど、いったんスキップ。
ちなみに、Vim 以外にどんなエディタやIDEがよさそうか少しだけ調べたので、この記事の最後に紹介する。
(3) Hello, world からの初めてのライブラリ
How to Write Go Code - The Go Programming Language の続き。
Go 開発をするにあたってディレクトリレイアウトをどうしたらいいかというのが書いてある。
この辺りはちゃんと理解しておこう、ということで "Hello, world" な main 関数を持つ hello.go と、掛け算ライブラリの multiply.go を書いてみる。
チュートリアルではライブラリは文字列の reverse だったけど、おもしろくないので気分で変えた。
最終的なディレクトリレイアウトはこうなった。
% tree . ├── bin │ └── hello ├── pkg │ └── darwin_amd64 │ └── github.com │ └── key-amb │ └── multiply.a └── src └── github.com └── key-amb ├── hello │ └── hello.go └── multiply └── multiply.go 10 directories, 4 files
hello.go, multiply.go の中身はこんな感じ:
// hello.go package main import ( "fmt" "github.com/key-amb/multiply" ) func main() { fmt.Printf("Hello, world\n") fmt.Printf("3 * 2 = %d\n", multiply.Double(3)) }
// multiply.go package multiply func Double(i int) int { return i * 2 }
書いたら次のコマンドでコンパイルできる。
go build github.com/key-amb/multiply go install github.com/key-amb/hello
ちなみにコードを書いてる途中は go run hello.go
とかで直接実行できて便利。
まだ大して進んでいないが、もうそれなりのボリュームになってきたので、この記事はいったんここで〆ておく。
これから A Tour of Go のチュートリアルを写経しまくるつもり。
補遺: Vim 以外のエディタや IDE について
執筆時点では Mac でしか試してませんが、参考記事には Mac に依らない情報もあります。
結論としては、Atom か LiteIDE か Eclipse がよさげ。
他に好みによっては Emacs とか IntelliJ IDEA とか Sublime Text という選択肢もあるかも。
GoIDE っていうそのものズバリのもあるが、2011/08 に 1.0 がリリースされて以降、更新されてないので、候補から外していいだろう。
以下を参考にした。