ホームページ > バックエンド開発 > Golang > Go で Nil インターフェイスからポインタへの直接変換が失敗するのはなぜですか?

Go で Nil インターフェイスからポインタへの直接変換が失敗するのはなぜですか?

DDD
リリース: 2024-12-02 01:14:10
オリジナル
904 人が閲覧しました

Why Does Direct Conversion of a Nil Interface to a Pointer in Go Fail?

Nil インターフェースとポインター変換の物語

Golang で nil インターフェースを特定のデータ型のポインターに直接変換しようとする提供されたコード スニペットに示されているように、エラーが発生します。このエラーは、nil インターフェイス変数が異なる動的型の値を保持できるか、値をまったく保持できないために発生します。

型アサーション n = p.(*Node) は、インターフェイス変数 p に非-nil タイプ *Node の値。ただし、p は nil であるため、特定のデータ型にキャストできません。

別のアプローチは、次の構文を使用して特定のデータ型のポインター変数に明示的に nil を割り当てることです。 n = (*Node )(なし)。この代入により、ポインタ n が *Node 型のゼロ値 (nil) を指すように設定されます。

nil インターフェイス値をより効果的に処理するには、型アサーションの「カンマ OK」形式の使用を検討してください。 n、ok := p.(*ノード);わかりました { ... }。この形式は 2 つの値を返します。n は型アサーションが成功した場合のインターフェイスの値であり、ok は型アサーションが成功したかどうかを示します。インターフェース値が nil の場合、ok は false になり、n はターゲット型のゼロ値になります。

以上がGo で Nil インターフェイスからポインタへの直接変換が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート