Go言語のC-bindings(.goc/.cgo)を見てみる。

Go言語のソースコードを見てみると拡張子が、.gocというファイルを良く見かける。これは何?ということでちょっと調べてみた。
このファイル群は、Go言語のCバインディング記述を持ったファイルであり、pkg/runtime/dist以下のgoc2c.cにより、C言語のコードに変換される。(親玉からはmain.c=>build.c=>goc2c.cの呼び出し関係にある)
コードの更新の歴史から見てみると、2010年4月に、拡張子がcgoからgcoに変わったらしい。このため、コードツリーにはcgoというディレクトリがいまだに残っている。

ソースコード

メーリングリスト

日本語参考資料