new() と "&" 演算子の違い
Go では、new() 関数と "&" メモリ アドレス演算子は両方ともメモリを割り当てるために使用されます。ただし、それらの使用法には微妙な違いがいくつかあります。
機能の比較
new() 演算子と & 演算子は両方とも、新しく割り当てられたメモリ アドレスへのポインタを返します。ただし、構文が異なります。
型分析
提供されたコード例で示されているように、リフレクション分析の結果、&Vector{} と new(Vector) は両方とも Vector 構造体のインスタンスへのポインタであるため、同じ型のポインタを返すことがわかりました。
Historical Confusion
Go メーリング リストでは、混乱を招く可能性があるため、メモリ割り当てに new() と & の両方を使用することについての懸念について以前に議論しました。
特殊なケース
これは注目に値します。 new() は、整数などの名前のない基本型へのポインターを取得する唯一のメソッドです。これは次の例で確認できます。
p := new(int) // valid p := &int{0} // invalid
設定と使用法
最終的に、メモリ割り当てに new() を使用するか & & を使用するかの選択は、主に個人的な好みの問題。どちらの方法も同じ機能を持ち、同じ結果が得られます。ただし、2 つの演算子の微妙な違いを認識し、特定の要件に基づいて適切に使用することが重要です。
以上がGo の「new()」関数と「&」メモリ アドレス演算子の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。