Goとは
- 完全なコマンド操作ツールセットを持つ(クロスコンパイルも簡単)
- コンパイル速度が速く、コンパイル済みプログラムの実行速度もC言語やC++に迫る速さ
- タイプセーフかつメモリセーフ
らしい。早速プラットフォームをインストールしてみる。
Goのインストール
Homebrewからインストールする。
$ brew install go
ターミナルを再起動すると、goコマンドが使えるようになる。
GOROOT と GOPATH
を環境変数に指定するように各所で言われているが、今回はGOROOTを指定しない。
- GOROOT Goのルートディレクトリを指す
- GOPATH Goのワーキングディレクトリを指す
ところが、GOROOTはインストールしたGoに既に環境変数として登録されており、既に然るべき場所を参照している。
$ go env GOROOT
# /usr/local/Cellar/go/1.3.2/libexec
ので、複数バージョンのGoをインストールして、バージョンをまたいで使ったりするのであれば個別に上書き指定する必要があるかもしれないが、素直に使うので今回はそれを行わなかった。言い換えれば、exportされるGOROOTは go env GOROOT を上書きする事になる。
GOPATHは作業ディレクトリを参照するようにしておく。
$ export GOPATH=/Users/1000ch/workspace/go
Hello, World
GOPATH配下のsrcフォルダに適当なプロジェクトを作成する。
$ mkdir $GOPATH/src/helloworld
プログラムを作成する。ここではmain.goとしておく。
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
実行するには、以下のようにrun + ファイル名で実行する。
$ go run $GOPATH/src/helloworld/main.go
# hello, world
パッケージをダウンロード
go getによってリモートのGoパッケージをダウンロードすることが出来る。GitHubやらBitBucketやらをリモートとし、対応するバージョンシステムを利用して取得。
例えば以下のようにGitHubにあるGoのパッケージをダウンロードすると、$GOPATH/srcにダウンロードされる。
$ go get github.com/golang/lint
パッケージをインストール
go installによってパッケージをインストール可能。インストールしたパッケージは$GOPATH/binに配置される。パッケージ名は.goファイルのパッケージ名に基づく。
$ go install pkgname
バイナリが$GOPATH/binに生成される。これは実行可能ファイル。
$ ./bin/pkgname
パッケージのビルド
go buildによってパッケージをビルド可能。go installとは異なり、カレントディレクトリに配置される。
$ go build pkgname
カレントディレクトリにgo install同様の実行可能ファイルが生成される。
$ ./pkgname