インターフェイス内の値のアドレス指定
インターフェイスに格納されている値のアドレスを取得できない理由を理解するには、次のことが重要です。インターフェイス変数の性質を詳しく調べます。基本的に、インターフェイス値は 2 つのコンポーネントで構成されます。
注意すべき 2 つの重要な側面:
次のコード スニペットを考えてみましょう。
<code class="go">var v interface{} v = int(42) p := GetPointerToInterfaceValue(&v) // a pointer to an integer holding 42 v = &SomeStruct{...}</code>
このシナリオでは、以前に整数を保持していたストレージがポインタを格納するために再利用されます。その結果、 *p を逆参照すると、ポインタの数値表現が得られるようになりました。
型システムの侵害を防ぐために、Go はこのタイプのポインタの取得を (安全でないパッケージの使用を除いて) 意図的に制限しています。
代替ソリューション
リストに格納されている構造体のポインターにアクセスすることが要件の場合は、次の代替案を検討してください。
以上がGo インターフェイスに格納されている値のアドレスを取得できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。