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
Lepaskan: 2024-12-17 20:13:10
asal
845 orang telah melayarinya

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{}
Salin selepas log masuk

dan

var m = make(map[string]int)
Salin selepas log masuk

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"}
Salin selepas log masuk

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

m := map[T]U{}
Salin selepas log masuk

semantiknya sama dengan menggunakan make secara eksplisit:

m := make(map[T]U)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan