関数にポインターを渡すと、関数が参照する値を変更できます。ただし、この操作を正しく実行するには、ポインターの内部の仕組みを理解する必要があります。
ポインターが指す値を変更するには、ポインターを逆参照することが不可欠です。 Go では、この目的にアスタリスク演算子 (*) が使用されます。ポインタを逆参照すると、ポインタが指す基になる値にアクセスできます。
主な違いは、ポインタの値の変更とポインタの値の変更です。を指します。ポインタ変数に新しい値を代入すると、格納されているアドレスのみが変更されます。たとえば、以下のコード スニペットは、指す値を変更しません。
<code class="go">func f(p *Test) { p = &Test{4} }</code>
指す値を変更するには、逆参照演算子を使用する必要があります。これは、明示的または暗黙的に行うことができます。
明示的な逆参照:
<code class="go">func f(p *Test) { *p = Test{4} }</code>
暗黙的な逆参照:
<code class="go">func f(p *Test) { p.Value = 4 }</code>
どちらの場合も、p が指す値が変更されます。
ポインターをポインターに渡す (*テスト) と、main 関数に格納されているポインター値を変更できます。 。ただし、元のポインタが指す値は変更されません。
<code class="go">func f(p **Test) { *p = &Test{4} }</code>
要約すると、ポインタを関数に渡すときは、ポインタの値を変更することと、ポインタが指す値を変更することの違いを理解することが重要です。を指します。ポインターの逆参照は、後者の操作を実行するために不可欠であり、基になるデータ値を変更できるようになります。
以上がGo でポインターによって逆参照された値を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。