ホームページ > バックエンド開発 > Golang > Go Maps: `var m = map[string]int{}` と `var m = make(map[string]int)`: 違いは何ですか?

Go Maps: `var m = map[string]int{}` と `var m = make(map[string]int)`: 違いは何ですか?

Susan Sarandon
リリース: 2024-12-17 20:13:10
オリジナル
921 人が閲覧しました

Go Maps: `var m = map[string]int{}` vs. `var m = make(map[string]int)`: What's the Difference?

マップの初期化: ショートカットと明示的な作成の違いを解明する

次の 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート