go

golang のyaml library の使い方

go

Go 言語にはyaml を入出力するためのライブラリhttp://godoc.org/gopkg.in/yaml.v2:package yaml があり、これを使うとGoの構造体とyamlとの変換が、わりに簡単にできる。ところが、構造を持たないようなデータを読もうと思うとなんだかうまくいかない。例え…

Google App Engine for Go

Python, Javaにつづく第3の言語としてGoogle App Engineに投入されたのはなんと Go Lang だった。Google内部にしかまじめに使っている人はいなさそうなのに。。。これを Go に対するGoogleのコミットメントの現れだと考えるか、単なる趣味の世界だと考えるか…

App Engine for Go!

App Engine に第3の言語がサポートされた。Rubyあたりなんじゃないかと思ってたのだけど、蓋を開けたら、なんと、Go だ。Go版の噂は聞いていたけど、GoはもともとCやC++が得意とするようなシステムレベルプログラムをターゲットとしていたはずで、現在実際に…

Go のチャンネルオーバヘッド

go

Goではチャンネルをいろいろな目的に使うことが推奨されている。pythonならgeneratorで書くようなこともgoroutineとチャンネルでやる。確かに書きやすくはなるのだろうけど、どの程度オーバヘッドがあるのか調べてみた。 調べること プロデューサとコンシュ…

Effective Go 野良翻訳(4)

go

これでおわり。並行性、エラー、Webサーバ。 並行性 通信による共有 並行プログラミングは大きなトピックだ。スペースの関係上、Go固有の特徴的な話だけに絞る。多くの環境において並行プログラミングが大変なのは、共有される変数へのアクセスを巧妙に正し…

Effective Go 野良翻訳(3)

go

続き。これで3/4かな。初期化、メソッド、インターフェイス、埋め込み。 初期化 Goの初期化は、CやC++の初期化とそれほど違わないようにみえるが、よりパワフルである。複雑な構造体も初期化で作ることができるし、複数パッケージ間のオブジェクトの初期化順…

Effective Go 野良翻訳(2)

go

続き。関数とデータ。これで半分ぐらい。 関数 複数返り値 Go特有の機能として関数やメソッドが、複数の値を返せることが挙げられる。この機能を使うと、Cでよく出てくるカッコ悪い書き方を改善することができる。エラーステータスを(-1やEOFなどの)特殊な…

Effective Go 野良翻訳(1)

go

Effective Goが面白いので勉強のため翻訳してみる。意外に長いのでちょっとづつ。 はじめに Go は新しい言語だ。Go は既存言語からアイディアを借用しているが、変わったところもあるので、実際のGoプログラムは、Goの親戚言語で書かれたプログラムと異なる…

Go から Cを呼び出す

go

Go には2つコンパイラの系統がある。6gなどのgcと呼ばれるものとgccgoと呼ばれるもの。前者はcと呼び出しのコンベンションが違うので、Cのライブラリを直接呼び出すことはできない。後者はgccへのトランスレータ?なので呼び出すことができるようだ。6g系列…

Go 勉強中

go

いまさらGo 勉強中。なかなか、いい。好みだ。言語仕様がリッチじゃないところが好き。コンパイラの質が上がれば、システム用言語として本当に使えるんじゃないだろうか。 感覚としてはCとPythonの間って感じ。Pythonと違って型があるので、コンパイル時の…