Goはじめて3ヶ月。
Goいいな、Goクソだなと日々葛藤。

Goをこれからはじめようという人が迷いそうな(俺が迷った)GOPATH について。

Goのインストール

インストール自体はbrewで速攻終わる。

$ brew install go

問題はこの後の$GOPATHの設定。

GOPATHって何

http://golang-jp.org/doc/code.html#GOPATH

GOPATH環境変数はワークスペースの場所を示してします。

そのままなのだが、つまり、

  1. Goを書くのは全部このパス下でやってね
  2. Go書く上で依存してるライブラリのソースも全部このパスに入るよ

ということで、例にあるようにそのまま、

$ export GOPATH=$HOME/go
$ export PATH=$PATH:$GOPATH/bin

としているが、特に困っていない。

Goを書く

じゃGo書くぜってことになるが、GOPATH直下に書くわけではない というのがめんどくさいところ。

まず、Goを書く時は、GitHubに公開する前提 と考えておいたほうがよい。 というのも、Goを書いていると頻出するが、外部ライブラリの import文はほぼ、GitHubのURLになる。

import "fmt" // 標準パッケージ
import "github.com/takecy/hoge" // OSSのライブラリ

github.com/{account_name}/{repository_name} でimportできるステキ仕様。 そしてライブラリのメソッドとか呼び出すためには、ソースコードを取得しないといけないので、下記を実行する。

$ go get github.com/takecy/hoge

ここで、GOPATH が登場する。
このライブラリがダウンロードされ、配置されるパスは $GOPATH/src/github.com/takecy/hoge
になる。
自分のGoのプロジェクトもこれと同じように、 $GOPATH/src/github.com/{account_name}/{repository_name}
ディレクトリを作って、そこにGoソースを作成してスタートする。

GitHubで公開する気とか無いし、、と思っても、このパスで作るのがおすすめ。

まとめ

Goやり始めた当初は、元々$HOME/git下に全部GitHub関連入れていたので、移動したくなく、GOPATHにシンボリックリンク貼ったりとかして抵抗していたのだが、結局Go関連は、全部移動することに。。
同じGitHubからのソースなのに、全然別のディレクトリになっているもやもやは地味にストレス。
が、GitHubのURLをimportに書けるというのはすごくいい。
例えばJavaでよくある、「このライブラリすごくよさそうだけど、mavenにあがってねーじゃん、、」ということもない。

Let’s write Go。

どうでもいいけど、Goのライブラリ名はダジャレがちらほら。
例えばRedisのドライバは redigo