A Tutorial for the Go Programming Language

昨日の続きです。ちょこちょこプログラムを書いていきます。

An I/O Package

ここではファイルへの操作をラップするモジュールを作りました。ここで面白かったのはメソッドの定義でしょうか。Goではクラスに相当するものはstructのようです。明示的にclassとは書かないようですね。そしてそのメソッドもstructの定義中ではなく定義の外で記述します。

// 構造体定義 (ここでは変数だけ)
type File struct {
    fd int
    name string
}

// 構造体メソッド定義
func (file *File) Read(b []byte) (ret int, err os.Error) {
    // ...
}


最近の動的言語ではよくあるようにIntegerなどの組み込み型にもメソッドを追加することが出来ます。


あと面白いと感じたのは戻り値に複数の値を返せること。上のReadメソッドでも二つ返しています。でもここはちょっと・・・と思ったのは、変数名やメソッド名を大文字で始めるとPublicになる、という規則。これはあんまり好きじゃありません。名前は人それぞれしっくり来るものがあります。なので個々人で決めたいと思うわけです。