Go でのポインタの逆参照
Go では、ポインタの逆参照には、ポインタが指すメモリ アドレスに格納されている値へのアクセスが含まれます。 variable.
問題:
Go チュートリアルで提供されている例では、ポインターの逆参照の予期された動作が発生しません。ポインター変数を使用して構造体の値を変更する場合、その変更は構造体の間接参照コピーには反映されません。
説明:
t := * q 操作は、q が指す構造体のコピーを作成します。その後 q に加えられた変更は t には影響しません。 Go はポインタを値として扱い、代入はコピー操作であるため、この動作は予期されています。
t の q を通じて行われた変更を観察するには、値をコピーするのではなく、構造体へのポインタを維持する必要があります。これは、代わりに q を t に代入することで実現できます。
t := q
C/C 比較:
Go でのポインタ参照解除の動作は C/ での動作と似ています。 C.どちらの言語でも、ポインターは値のアドレスを格納し、ポインターを逆参照することで実際の値にアクセスできます。ただし、Go ではポインターへの代入はコピーされた値になりますが、 C/C では参照された値を直接変更します。
以上がGo でポインターを逆参照しても元の構造体が更新されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。