Go 言語には、標準のコーディング規約が用意されており、それに合わせた組み込みのコードフォーマッター (go fmt
) も提供されています。
Go 言語のコーディング規約
Go 言語におけるコーディングスタイルは、下記のドキュメントが参考になるでしょう。
ポイントを簡単にまとめておきます。
- インデントにはハードタブ(タブ文字)を使用 し、ソフトタブ(半角スペース)を使用しない。
- 1行あたりの文字数に制限はない。もちろん、長すぎる場合は改行してもよい。
- 連続した変数定義やコメントは縦に揃える
type T struct { name string // name of the object value int // its value }
- 演算子の前後にスペースを入れない。演算子の優先順位を明確にするときのみスペースを入れる。その代わり余計な括弧を使わない。
x<<8 + y<<16 x, y = y, x+y
- 命名規則
- 公開メソッド、フィールド:
MexedCaps
(大文字で始める) - 非公開メソッド、フィールド:
mixedCaps
(小文字で始める) - コンストラクタ:
NewBook
(New + 生成対象の構造体名) - 1つのメソッドを持つインタフェース:
Reader
(Read メソッドだけを持つインタフェース)
- 公開メソッド、フィールド:
というように、いくつかのフォーマットルールがあるのですが、Go には下記のような自動整形ツールが付属しているので、これを実行して自動で整形してしまうのが手っ取り早いです。
コードを自動整形する (go fmt と gofmt)
Go 言語には、コーディング規約に従ってコードを自動整形するためのツール (go fmt
) が標準で搭載されています。
上記のように実行すると、hello.go
ファイルの内容が整形されて書き換えられます。
指定したソースコードが直接変更される ことに注意してください。
次のように実行すれば、プロジェクト内のすべての .go
ファイルをフォーマットできます。
$ go fmt ./...
元のソースコードを書き換えずに標準出力へ整形結果を出力したい場合は、go fmt
の代わりに gofmt
コマンドを使用します。
go fmt
の振る舞いは、gofmt -l -w
と同様のようです。