Effective Goの理解度をチェックする

最終更新: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を使用します。