空のスライスの初期化: 2 つのアプローチの評価
非固定サイズの空のスライスを初期化するには、次の 2 つの一般的な方法が使用されます。
mySlice1 := make([]int, 0) mySlice2 := []int{}
これらのアプローチの違いを調査することは、コードのパフォーマンスを最適化し、 Go のメモリ管理を理解します。
ランタイムの影響
make([]int, 0) は、ランタイム関数 runtime.makeslice を内部的に明示的に呼び出します (Go 1.16)。これには、スライスの長さをゼロに初期化する場合でも、スライス ヘッダーとバッキング配列にメモリを割り当てることが含まれます。また、スライスの容量を割り当てられたサイズに設定します。
Nil スライス: 3 番目のオプション
もう 1 つの方法は、nil スライスを作成することです:
var mySlice []int
nil スライスは、機能的には長さ 0 のスライスと同等です。ただし、これは基になるデータを指しません。
JSON マーシャリングの考慮事項
JSON マーシャリング時に nil スライスと空のスライスの動作が異なることは注目に値します。 nil スライスは「null」にマーシャリングされ、空のスライスは「[]」にマーシャリングされます。
メモリ割り当て
上記のメソッドのどちらも、make([] int、0)、[]int{}、または nil スライスを作成すると、メモリが発生します
推奨アプローチ
最終的に、どのアプローチを使用するかの選択は、特定の要件と好みによって異なります。次の点を考慮してください:
以上が空のスライスの初期化: `make([]int, 0)` vs. `[]int{}` vs. `nil` – どれが最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。