まくまくHugo/Goノート
Go 言語のコーディングスタイル(コーディング規約)
2017-08-30
Go 言語には、標準のコーディング規約が用意されています。

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 言語には、コーディング規約に従ってコードを自動整形するためのツール (go fmt) が標準で搭載されています。

$ go fmt sample.go

上記のように実行すると、sample.go ファイルの内容が整形されて書き換えられます。 元のソースコードが直接変更されることに注意してください。

元のソースコードを書き換えずに、標準出力へ整形結果を出力したい場合は、go fmt の代わりに gofmt コマンドを使用します。

$ gofmt sample.go
package main

import "fmt"

func main() {
	fmt.Println("Hello Go")
}
2017-08-30