Rumah >pembangunan bahagian belakang >Golang >Go Maps: `var m = map[string]int{}` vs. `var m = make(map[string]int)`: Apakah Perbezaannya?

Go Maps: `var m = map[string]int{}` vs. `var m = make(map[string]int)`: Apakah Perbezaannya?

Susan Sarandon
Susan Sarandonasal
2024-12-17 20:13:10946semak imbas

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

Pemulaan Peta: Membongkar Perbezaan Antara Penciptaan Pintasan dan Eksplisit

Persoalannya timbul: apakah yang membezakan dengan jelas dua pendekatan berikut untuk memulakan peta dalam Pergi:

var m = map[string]int{}

dan

var m = make(map[string]int)

Adakah yang pertama hanyalah kaedah ringkas untuk memulakan medan dengan cepat? Adakah terdapat sebarang implikasi prestasi yang berpotensi untuk dipertimbangkan?

Membedah Perbezaan

Perbezaan antara kedua-dua sintaks ini terletak pada implikasinya untuk peta bukan kosong. Walaupun membuat secara konsisten mencipta peta kosong, contoh pertama memanfaatkan ciri unik literal peta: keupayaan untuk mewujudkan peta bukan kosong secara langsung. Contohnya:

m := map[bool]string{false: "FALSE", true: "TRUE"}

Untuk menyamaratakan contoh anda, literal peta bukan kosong tanpa pasangan nilai awal, seperti berikut:

m := map[T]U{}

semantiknya sama dengan menggunakan make secara eksplisit:

m := make(map[T]U)

Walau bagaimanapun, make memberikan kelebihan tambahan: ia membenarkan spesifikasi kapasiti awal untuk peta yang melebihi kiraan elemen yang diberikan pada mulanya. Pertimbangkan contoh ini:

m := make(map[T]U, 50)

Sintaks ini memperuntukkan ruang yang mencukupi dalam peta untuk memuatkan sehingga 50 item. Dengan menyimpan memori secara proaktif, peruntukan masa hadapan boleh diminimumkan apabila menjangka pertumbuhan peta.

Atas ialah kandungan terperinci Go Maps: `var m = map[string]int{}` vs. `var m = make(map[string]int)`: Apakah Perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn