最終更新:2020/05/11
1. Effective Goとは
Effective GoはGo言語の良い書き方をまとめたサイトです。
基本的な書き方が身についたら必ず目を通すべき内容です。
Effective Goの内容を理解しているかどうかの簡単なチェックシートを作成したので、理解度の確認に利用してください。
理解度チェック
フォーマット
- コードのフォーマットにはgofmtを利用してる。
コメント
- パッケージには、パッケージコメント、パッケージ句の前にあるブロックコメントを記載する。パッケージのコメントは、パッケージを紹介し、パッケージ全体に関連する情報を提供する必要がある。
- パッケージが単純な場合は、パッケージのコメントを簡潔にします。
例
// Package path implements utility routines for
// manipulating slash-separated filename paths.
- パッケージ内では、トップレベルの宣言の直前にあるコメントは、その宣言のドキュメントコメントとして機能します。プログラム内のエクスポートされた(大文字の)名前にはすべて、ドキュメンテーションコメントが必要です。
例
// Compile parses a regular expression and returns, if successful,
// a Regexp that can be used to match against text.
func Compile(str string) (*Regexp, error) {
- Goの宣言構文では、宣言をグループ化できます。 1つのdocコメントで、関連する定数または変数のグループを紹介できます
例
// Error codes returned by failures to parse an expression.
var (
ErrInternal = errors.New("regexp: internal error")
ErrUnmatchedLpar = errors.New("regexp: unmatched '('")
ErrUnmatchedRpar = errors.New("regexp: unmatched ')'")
...
)
名前
- パッケージ外の名前の可視性は、最初の文字が大文字かどうかによって決まる。
- パッケージには小文字の1語の名前が付けられます。アンダースコアやmixedCapsは必要ありません。
GetterとSetter
- owner(小文字、未エクスポート)というフィールドがある場合、getterメソッドはGetOwnerではなく、Owner(大文字、エクスポート)とするべき
- owner(小文字、未エクスポート)というフィールドがある場合、setterメソッドはSetOwnerとするべき
interface
- 1メソッドインターフェースは、メソッド名と-erサフィックスまたは同様の修正によって名前が付けられ、エージェント名詞を作成する。
例
type Reader interface {
Read(p []byte) (n int, err error)
}
MixedCaps
- マルチワード名を書くのにアンダースコアではなくMixedCapsまたはmixedCapsを使用します。