Go を使用する場合、new キーワードの適切な使用法を理解することが不可欠です。この記事は、new が推奨される特定の状況に光を当て、一般的な誤解に対処し、明確な説明を提供することを目的としています。
提供された例で示されているように、new はプリミティブには適していませんスライスなどのタイプ。このような場合、make コマンドを使用してスライスまたはマップを初期化する必要があります。例:
<code class="go">func main() { y := make([]float, 100) fmt.Printf("Len = %d", len(y)) // Output: Len = 100 }</code>
構造体を使用する場合、y := new(my_struct) と y := &my_struct のどちらを選択するかは、使用目的とコードの読みやすさによって異なります。どちらのオプションも、ヒープ上に新しく割り当てられた構造体へのポインターを作成します。ただし、ポインタを割り当てる場合、new はより明示的にできますが、& はより簡潔な表記です。
Go では、変数はデフォルトでゼロ値で初期化されます。これは、整数、浮動小数点、ブール値などのプリミティブ型は 0 に初期化されるのに対し、スライス、マップ、構造体はそれぞれ nil 値で初期化されることを意味します。 new キーワードはこの動作を変更しないため、割り当てられた構造体のフィールドは引き続きゼロ値に初期化されます。
上記の制限にもかかわらず、new には用途があります。 Go の場合:
以上が## Go で「new」キーワードを使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。