サーチ…


説明

ゼロ値またはゼロ初期化は実装が簡単です。 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