LoginSignup
1
1

More than 5 years have passed since last update.

Golang個人的めも・スニペット

Last updated at Posted at 2017-02-19

随時追加していきます。

めも

Golang固有のもの

  • errorpanic の使い分け
    • エラーを受け取って、後続で回避する方法があるときのみ error を返却
    • 対処のしようがない場合は panic
  • 略語は大文字/小文字で統一する。
    • OK : DBManager, dbManager
    • NG : DbManager
  • 複数の返却値が同じ型を持つ場合は、返却値に名前をつけるとよい
    • func Location() (lat, lng float64, err error)
  • package名を class名や func名に使用しない(冗長になる)
    • OK : db.Manager
    • NG : db.DbManager
  • makenew はなるべく避ける
    • OK : []int{}
    • NG : make([]int, 0)
    • 例外 : make([]int, 32) ※サイズが決まっている場合

一般的なもの

  • スコープの狭い変数は短く、遠くで使う変数は説明的に長く

スニペット等

非エクスポート 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")
}

switchif-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")
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1