フォーマット

フォーマットの問題は最も議論を呼ぶものですが、最も重要でないものでもあります。人々は異なるフォーマットスタイルに適応できますが、そうする必要がない方が良く、皆が同じスタイルに従えばこのトピックに割く時間が少なくなります。問題は、長い規範的なスタイルガイドなしにこの理想郷にどのようにアプローチするかです。

Goでは異常なアプローチを取り、マシンにほとんどのフォーマット問題を処理させます。gofmtプログラム(ソースファイルレベルではなくパッケージレベルで動作するgo fmtとしても利用可能)は、Goプログラムを読み取り、標準スタイルのインデントと垂直整列でソースを出力し、コメントを保持し、必要に応じて再フォーマットします。新しいレイアウト状況をどう処理するか知りたい場合は、gofmtを実行してください。答えが正しくないように見える場合は、プログラムを再配置してください(またはgofmtについてバグを報告してください)。回避策を講じないでください。

例として、構造体のフィールドのコメントを整列させるのに時間を費やす必要はありません。Gofmtがあなたのためにそれを行います。次の宣言があるとします

type T struct {
    name string // name of the object
    value int // its value
}

gofmtは列を整列させます:

type T struct {
    name    string // name of the object
    value   int    // its value
}

標準パッケージのすべてのGoコードはgofmtでフォーマットされています。

いくつかのフォーマットの詳細が残っています。簡潔に:

インデント タブをインデントに使用し、gofmtはデフォルトでそれらを出力します。どうしても必要でない限りスペースを使用してください。

行の長さ Goには行の長さ制限がありません。パンチカードがオーバーフローすることを心配する必要はありません。行が長すぎると感じる場合は、それを折り返し、追加のタブでインデントしてください。

括弧 Goは CやJavaよりも少ない括弧を必要とします:制御構造(ifforswitch)は構文で括弧を必要としません。また、演算子の優先順位階層はより短く明確なので

x<<8 + y<<16

は、他の言語とは異なり、スペーシングが示すことを意味します。