2009-11-11 [長年日記]

プログラミング言語「Go」を触ってみた。

Googleが新しいプログラミング言語「Go」を発表したようで。

Pike氏によると、Goは、CおよびC++と類似しているが、最新の機能を採り入れ、ウェブブラウザ内でも使用可能にするなどの汎用性を備えているという。

将来的にはChromeとかでサポートされたりするのかしら?

何はともあれインストールしてみる。ドキュメントはInstalling Goを参照した。

環境変数の設定

いくつかの環境変数を設定する必要がある。

$GOROOT
ソースツリーの場所。
$GOOS
インストールするOS。linux、darwinなど。
$GOARCH
CPUのアーキテクチャ。386、amd64など。
$GOBIN
バイナリがインストールされる場所。指定しなければ、$HOME/binにインストールされる。$GOBINは$PATHに含めておかなければならない。$GOBINディレクトリはあらかじめ作っておく。

そんな感じで以下のように設定した。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

Goのコンパイルとインストール

コンパイルはソース付属の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でサポートされるとか、キラーアプリケーションが出るとかしないとね。

Tags: Go Google | Bookmark:


«前の日記(2009-10-14) 最新 次の日記(2009-11-19)»