Go では、ポインター レシーバー関数を使用してレシーバー オブジェクトの値を変更できます。ただし、Go でポインターがどのように機能するかを理解することは、実装を成功させるために非常に重要です。
ポインター レシーバー メソッドを通じて単純型の値を変更しようとすると、次のような状況に遭遇する可能性があります。変更はメソッドの外部では保持されません。これは、レシーバーを含むすべてのメソッド引数がメソッドの実行内でローカルにコピーされるためです。
提供された例では、
fi pointer 引数は、main 内の元の fi ポインタのコピーです。したがって、FromString メソッド内でコピーされた fi ポインターに加えられた変更は、元のポインターではなく、ローカル コピーにのみ影響します。
これを解決するには、いくつかのオプションがあります。
更新されたポインタをレシーバに割り当てる return ステートメントを作成し、返されたポインタを main で再割り当てします。
ターゲット型の非 nil ポインターを引数としてメソッドに渡します。
受信者ポインタを変更する前に、受信者ポインタが非 nil であるかどうかを確認します。
以上がGo でポインター レシーバー メソッドを使用して値を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。