サーチ…
説明
ゼロ値またはゼロ初期化は実装が簡単です。 Javaのような言語から来るものは、いくらかの値がnil
なることがあり、他の値はそうではないことが複雑に見えるかもしれません。要約:Zero Value:Goプログラミング言語仕様 :
ポインタ、関数、インタフェース、スライス、チャネル、マップは唯一の型です。残りはそれぞれの型に基づいて偽、ゼロ、または空の文字列に初期化されます。
何らかの状態をチェックする関数を使用すると、問題が発生する可能性があります。
func isAlive() bool {
//Not implemented yet
return false
}
ゼロ値は実装前でもfalseになります。この機能の復帰に依存するユニットテストは、誤検出/否定を与える可能性があります。
一般的な回避策はGoで慣用的なエラーも返すことです。
package main
import "fmt"
func isAlive() (bool, error) {
//Not implemented yet
return false, fmt.Errorf("Not implemented yet")
}
func main() {
_, err := isAlive()
if err != nil {
fmt.Printf("ERR: %s\n", err.Error())
}
}
構造体とエラーの両方を返すときは、非常にエレガントではない戻りのためのUser構造体が必要です。カウンターオプションは2つあります。
- インターフェースを使って作業する:インターフェースを返すことによってnilを返します。
- ポインタを使った作業:ポインタは
nil
することができます
たとえば、次のコードはポインタを返します。
func(d *DB) GetUser(id uint64) (*User, error) {
//Some error ocurred
return nil, err
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow