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!