「アドレスを取得できません」エラーと「ポインター メソッドを呼び出すことができません」エラーについて
Go を使用する場合、エラーが発生する可能性があります「のアドレスを取得できません」または「ポインタ メソッドを呼び出すことができません」など、学習者を混乱させます。 language.
問題:
次の Go コードを考えてみましょう:
diff := projected.Minus(c.Origin) dir := diff.Normalize() // error: cannot call pointer method on Vector3 // Vector3 methods func (a *Vector3) Minus(b Vector3) Vector3 { ... } func (a *Vector3) Normalize() Vector3 { ... }
Vector3.Normalize() のため、2 行目はコンパイル エラーを引き起こします。ポインタ レシーバが必要です。つまり、Vector3 の代わりに Vector3 値 (*Vector3) へのポインタが必要です。 value.
それが起こる理由:
関数およびメソッド呼び出しの戻り値は Go ではアドレス指定できません。したがって、2 番目の例では、コンパイラーは Vector3.Minus() の結果のアドレスを取得できず、その値に対して Normalize() を呼び出すことができません。
考えられる解決策:
以上がGo 関数呼び出しの結果でポインター メソッドを呼び出せないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。