Rumah >pembangunan bahagian belakang >Golang >Apakah Perbezaan Antara `map[T]U{}` dan `make(map[T]U)` dalam Go?

Apakah Perbezaan Antara `map[T]U{}` dan `make(map[T]U)` dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-04 17:26:11487semak imbas

What's the Difference Between `map[T]U{}` and `make(map[T]U)` in Go?

Memahami Perbezaan Antara Penciptaan Peta dengan dan tanpa make

Dalam Go, terdapat dua cara untuk memulakan peta:

var m = map[string]int{}
var m = make(map[string]int)

Walaupun ini mungkin kelihatan serupa, ia mempunyai implikasi dan praktikal yang berbeza pertimbangan.

Penciptaan Peta Kosong dengan make

Borang kedua, make(map[string]int), sentiasa mencipta peta kosong. Ini ialah cara mudah untuk memulakan peta tanpa pasangan nilai kunci awal.

Huruf Peta Bukan Kosong

Bentuk pertama, map[string]int{ }, ialah kes khas bagi literal peta. Literal peta membenarkan penciptaan peta bukan kosong dengan pasangan nilai kunci yang dipratakrifkan. Contohnya:

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

Huruf Peta Kosong

Sekarang, contoh dalam soalan anda:

m := map[T]U{}

Ini ialah literal peta tanpa nilai awal (pasangan kunci/nilai). Ini bersamaan dengan:

m := make(map[T]U)

Oleh itu, bentuk pertama pada dasarnya adalah jalan pintas untuk yang terakhir apabila membuat peta kosong.

Pertimbangan Prestasi

Dari segi prestasi, kedua-dua pendekatan adalah setanding untuk mencipta peta kosong. Walau bagaimanapun, make mempunyai fleksibiliti tambahan untuk menentukan kapasiti awal. Dengan menentukan kapasiti yang lebih besar, buat pra-peruntukkan ruang yang cukup dalam ingatan untuk memuatkan bilangan elemen tertentu. Ini boleh memberi manfaat untuk mengurangkan peruntukan masa hadapan jika anda tahu peta itu berkemungkinan besar.

Atas ialah kandungan terperinci Apakah Perbezaan Antara `map[T]U{}` dan `make(map[T]U)` dalam Go?. 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