Go のツアー オブ Go 演習 51 では、Scale メソッドは効果がないと説明されています。頂点値について。ただし、実験の結果、ポインターの代わりに頂点値が渡された場合でも、Scale が入力値を変更することが明らかになりました。
Go の強力な型指定では、ポインター レシーバーを持つメソッドが次のようにする必要があります。ポインタ引数を渡しました。ただし、コンパイラは特定の条件下で介入して暗黙的な変換を実行し、値引数をポインタに変換します。
メソッド呼び出し x.m() が行われるとき、コンパイラは以下をチェックします:
のパラメータ リストに割り当てることができます。これらの条件が満たされ、x がアドレス指定可能 (コピーされていない) の場合、コンパイラはコードを書き換えます。 (&x).m() として。この変換により、ポインター レシーバーを持つメソッドがポインターと値の両方を処理できるようになります。
この暗黙的な変換は、Go のメソッド セットの重要な機能です。これにより、プログラマーが明示的にポインターを管理する必要がなく、メソッドがポインターまたは値を操作できるようになり、コードが簡素化され、読みやすさが向上します。
以上がポインターレシーバーを使用した Go メソッドが値の引数を変更するように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。