マップの初期化: ショートカットと明示的な作成の違いを解明する
次の 2 つのマップ初期化アプローチの明確な違いは何なのかという疑問が生じます。 Go:
var m = map[string]int{}
と
var m = make(map[string]int)
前者は単にフィールドを迅速に初期化するための簡潔な方法ですか?考慮すべき潜在的なパフォーマンスへの影響はありますか?
違いの詳細
これら 2 つの構文の違いは、空でないマップに対する影響にあります。 make は一貫して空のマップを作成しますが、最初の例ではマップ リテラルの独自の機能、つまり空でないマップを直接確立する機能を活用しています。例:
m := map[bool]string{false: "FALSE", true: "TRUE"}
例を一般化すると、次のような初期値ペアのない空でないマップ リテラルは、明示的に make を使用することと意味的には同じです。
m := map[T]U{}
ただし、make には追加の利点もあります。マップの初期容量を指定できるため、最初に割り当てられた要素の数。次の例を考えてみましょう:
m := make(map[T]U)
この構文は、最大 50 個の項目を収容できる十分なスペースをマップ内に割り当てます。メモリを積極的に予約することで、マップの増大を予測する際に将来の割り当てを最小限に抑えることができます。
以上がGo Maps: `var m = map[string]int{}` と `var m = make(map[string]int)`: 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。