Golang Cafe #42 まとめ Effective Go を読む。

2014/08/10に開催された「Golang Cafe #42」についてのまとめです。

今回はEffective Goを読み進めていきました。
読み進めたところまでを簡単にまとめておきたいと思います。
独自の解釈や省略している部分もあるのでご了承ください。

はじめに

  • Go言語は既存の言語からアイデアを借りて作成された新しい言語です。
  • C++Java言語からの変換は満足のいく結果を得られない。
  • プロパティやイディオムを理解すること、ネーミング、フォーマット、プログラムの構造などの規約を知っておくことが重要です。
  • Go言語のパッケージソースコードは、コアライブラリだけではなく、使い方の例も意図しています。
  • 多くのパッケージはhttp://golang.org/で実行可能な例も含んでいます。
  • 問題へのアプローチ方法や、実装に関する質問の答えはパッケージ内のドキュメント、コード、あるいは例の中にあります

フォーマット

  • フォーマットの問題はもっとも異論が多いです。
  • gofmtプログラムが標準的なインデント、垂直位置そろえ、必要であればコメントのフォーマットをしてくれます。
  • Go言語の標準パッケージはすべてgofmtでフォーマットされています。
  • インデントにはタブを使います。
  • 1行の長さに制限はありません。
  • CやJavaに比べ括弧が少ないです。制御構造(if、for、switch)の構文には括弧はありません。

コメントの付け方

  • Cスタイルのブロックコメント、C++スタイルのラインコメントが使用できます。
  • godocプログラム、あるいはサーバーはパッケージの内容のドキュメントを抽出するための処理を行います。
  • すべてのパッケージはパッケージドキュメントを持つべきであり、パッケージが複数のファイルに分かれている場合は、1つのファイルに表示されるべきです。
  • パッケージドキュメントはパッケージ全体の情報を提供すべきです。
  • パッケージドキュメントはgodocの最初のページに表示されます。
  • プログラム内のエクスポートされる名前はドキュメントを持つべきです。
  • 最初の文は宣言されている名前で始まる要約であるべきです。
  • 宣言された名前でコメントが始まっていれば、godocによる出力を有効にgrepすることができます。
  • Go言語の宣言構文は、宣言のグループ化を許可しているので、定数や変数のグループにコメントをつけることができます。
  • グルーピングはグループ内の項目間の関係を示すことができます。