Googleが新しいプログラミング言語「Go」を発表したようで。
Pike氏によると、Goは、CおよびC++と類似しているが、最新の機能を採り入れ、ウェブブラウザ内でも使用可能にするなどの汎用性を備えているという。
将来的にはChromeとかでサポートされたりするのかしら?
何はともあれインストールしてみる。ドキュメントはInstalling Goを参照した。
いくつかの環境変数を設定する必要がある。
そんな感じで以下のように設定した。zshなら~/.zshrc、bashなら~/.bashrcに書いとけばいいだろう。
GOROOT=$HOME/go GOOS=darwin GOARCH=amd64 GOBIN=$HOME/opt/go/bin PATH=$PATH:$GOBIN export GOROOT GOOS GOARCH GOBIN PATH
ソースはMercurialで管理されてる。Mercurialを入れてなかったのでインスコ。portsからインスコするとXやらPythonやらのインスコがはじまってしまうので、おとなしくバイナリを入れた。
以下のコマンドでチェックアウト。
$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
コンパイルはソース付属のbashスクリプトで行う。あらかじめ先に述べた環境変数を設定しておかないとコケる。
$ cd $GOROOT/src $ ./all.bash
素直に行くかと思われたが、テストでコケてしまった。とりあえず、バイナリはインスコされてるようなので、原因は追及しないでおく。
とりあえず、サンプルにあったhello worldを書いてみる。
package main
import "fmt"
func main () {
fmt.Printf("hello world\n")
}
これをhello.goとして保存。
コンパイる。
$ 6g hello.go
6gってのがamd64の時のコンパイラらしい。コンパイルが終わると、hello.6ってのが生成される。6という拡張子もamd64のもの。386だとコンパイラが8g、拡張子が8らしい。
リンクる。6lがリンカ。
$ 6l hello.6
6.outが生成される。hello.outじゃないのね。当然のごとく、-oで出力ファイル名は設定可能。
実行。
$ ./6.out hello world
こんな感じ。とりあえず動くことは確認できた。あとは地道にチュートリアルをこなすしかあるまい。
しかし、Googleが作ってるとはいえ、流行るのかな?GAEでサポートされるとか、キラーアプリケーションが出るとかしないとね。