Hatena::ブログ(Diary)

最速チュパカブラ研究会

 | 

2009年11月12日 Go してみたよ

噂の Go をちょっと使ってみました。開発者が興味ないのか、あんまり充実してないグラフィックスまわりにあえて突撃

result

こんな感じのpng画像を出力します。ソースは以下の gist に。

プログラム構造は以下のような感じ

structure

  1. プログラムの最終的な目標は、標準ライブラリimage.png.Encode 関数を使ってPNGファイルを書き出すこと。
  2. image.png.Encode 関数は io.Writer と image.Image インターフェイスの実装を要求してくるので、必要な関数を実装する(黄色の部分)。
  3. さらに、ファイルを開いたり、画像に描画したりといった独自の動作を実装する(緑色の部分)

という流れでプログラムが出来上がっていきます。io.Writer や image.Image はライブラリ集ではなく、インターフェイスだけが定義されている「規約集」で、io.Writer の中身(この場合、syscallによるファイル操作)や、image.Image の中身(典型的には、配列ビットマップを保持)は各自で実装してね、ということになってます。

ファイル操作に関しては Tutorial のを切り貼りしただけですけどね……

→すいません、ファイル操作に関しては os パッケージ実装済みのものがありました。


あんまり Go らしい機能(goroutineとか)は使ってないですが、

func minmax(a, b int) (min, max int, reversed bool) {
  if a < b {
    min = a;
    max = b;
    reversed = false;
  } else {
    max = a;
    min = b;
    reversed = true;
  }
 
  return;
}

このへんはGoっぽいですね(なんかVBがこんな書き方してたような……)

あと、オブジェクト指向まわりはJavascriptっぽいなーと思いました。

 |