さわってみた

Googleにしては野暮ったい言語だなぁと思うのだけど,C++のリプレイスだと考えれば納得.まぁC++の良いところもだいぶ台無しにしているけど.
ただ個人的にはもう,C++はただのPython拡張記述言語になってしまっているので,Goを使うことはないだろうなー.

あと,標準ライブラリは荒削りだが相当充実している.

というわけで.チュートリアルとEffectiveなんちゃらを読みながらHTTPのクライアントだけ書いてみたのでポスト.

package main

import (
	"http";
	"bytes";
	"os";
	"strconv";
)

func main() {
  var s string = "";
  
  res,_,_ := http.Get("http://d.hatena.ne.jp/intaro/");

  contentLen,_ := strconv.Atoui64(res.GetHeader("Content-Length"));

  var nread uint64 = 0;
  for (nread < contentLen) {
    var buf [512]byte;
    nr, _ := res.Body.Read(&buf);

    nread += uint64(nr);
    s += bytes.NewBuffer(&buf).String();
  }

  os.Stdout.WriteString(s);
}

ちょっとだけ触っただけでも感じる良いところ

  • 標準ライブラリがいわゆる最近のスクリプト言語なみにしっかり
  • for文にループの全てがこめられているのはなかなかカッコ良い
  • Haskellみたいなワイルドカード表記が使えるのが嬉しい.

まだ,よくドキュメント読んでないから,わかんないけど現状で感じる不満は以下

  • パッケージの名前空間フラット?
  • 6gってなんだよ...なんでPlan9なんだよ...
  • 型が後置でかつ型名と変数名の間の区切りがスペースなのは見辛い気がする

まぁいまんとこ,これ以上踏み込んで使う予定はない.