随時追加していきます。
めも
Golang固有のもの
-
error
とpanic
の使い分け- エラーを受け取って、後続で回避する方法があるときのみ
error
を返却 - 対処のしようがない場合は
panic
- エラーを受け取って、後続で回避する方法があるときのみ
- 略語は大文字/小文字で統一する。
- OK :
DBManager
,dbManager
- NG :
DbManager
- OK :
- 複数の返却値が同じ型を持つ場合は、返却値に名前をつけるとよい
func Location() (lat, lng float64, err error)
-
package
名をclass
名やfunc
名に使用しない(冗長になる)- OK :
db.Manager
- NG :
db.DbManager
- OK :
-
make
、new
はなるべく避ける- OK :
[]int{}
- NG :
make([]int, 0)
- 例外 :
make([]int, 32)
※サイズが決まっている場合
- OK :
一般的なもの
- スコープの狭い変数は短く、遠くで使う変数は説明的に長く
スニペット等
非エクスポート func
のテスト
テスト対象を自パッケージとして扱えばOK
package foo_test
import (
. "foo"
)
for
文
for-each文の感覚で for elem := range list
とするとインデックス取っちゃう
for i, elem := range list {
fmt.Printf("%d, %+v", i, elem)
}
型アサーション
var e interface{}
unknown = 10
known, ok := unknown.(int)
if !ok {
fmt.Println("NG")
}
型スイッチ
switch unknown.(type) {
case int:
fmt.Println("int")
case string:
fmt.Println("string")
}
switch
で if-else
switch {
case a == True && b == True:
fmt.Println("case 1")
case a == True && b == False:
fmt.Println("case 2")
case a == False && b == True:
fmt.Println("case 3")
case a == False && b == False:
fmt.Println("case 4")
}