1. ホーム
  2. go

[解決済み] golangでnilはどういう意味ですか?

2022-03-11 07:47:13

質問

を使用するケースが多いようです。 ゼロ を使用します。例えば

func (u *URL) Parse(ref string) (*URL, error) {
    refurl, err := Parse(ref)
    if err != nil {
        return nil, err
    }
    return u.ResolveReference(refurl), nil
}

が、このままでは使えません。

var str string //or var str int
str = nil

golang コンパイラは can't use nil as type string in assignment のエラーが発生します。

見た目は nil は、構造体とインタフェースのポインタにしか使えません。もしそうだとすると とはどういう意味ですか? そして これを用いて他のオブジェクトと比較するとき、どのように比較するのか、言い換えれば、golangはどのように一方のオブジェクトがnilであると判断するのか、ということです。 ?

EDIT:たとえば、あるインターフェイスがnilの場合、その型と値は同時にnilでなければなりません。golangはこれをどのように行っているのでしょうか?

解決方法は?

囲碁では nil ポインター、インターフェース、マップ、スライス、チャンネル、関数型に対するゼロ値 を表す。 未初期化 の値です。

nil は、未定義の状態という意味ではなく、それ自体が適切な値なのです。Goのオブジェクトは nil のときだけです。 nil これは、前述のタイプのいずれかである場合にのみ可能です。

An error はインターフェースなので nil とは異なり、1つの値として有効です。 string . 明らかな理由により nil エラーは エラーなし .