Go'da Map məlumat tipi necə işləyir?
sobes.tech Süni İntellekt
AI-dan cavab
Xəritə — Go-da "açar-dəyər" cütlərinin sıralanmamış toplusudur.
Xüsusiyyətlər:
- Açarlar müqayisə edilə bilən məlumat tipləri olmalıdır (rəqəmlər, sətirlər, booleanlar, göstəricilər, kanallar, interfeyslər, əgər dinamik tip müqayisə edilə bilən olsa, və massivlər, əgər onların elementləri müqayisə edilə bilirsə). Slices, funksiyalar və digər xəritələr açar kimi istifadə edilə bilməz.
- Dəyərlər hər hansı məlumat tipində ola bilər.
- Xəritə referans tipidir, yəni, xəritə tipində dəyişən yaddaşda xəritə məlumat strukturuna göstərici ehtiva edir. Bir dəyişən vasitəsilə xəritədə edilən dəyişikliklər digər xəritəyə istinad edən dəyişənlərdə də görünəcək.
- Xəritə üçün sıfır dəyər
nil-dir.nilxəritəyə yazmaq mümkün deyil; cəhd panikaya səbəb olacaq. - Xəritənin ölçüsü elementlər əlavə olunduqca və ya silindikcə dinamik şəkildə dəyişir.
Daxili tətbiq: Go-dakı xəritə hash cədvəli (hash table) kimi həyata keçirilir. Hər açar hash-lənir və hash-in nəticəsi əlaqəli dəyərin cədvəldəki yerini müəyyən etmək üçün istifadə olunur.
// Xəritə yaratmaq
m := make(map[string]int)
// Elementlər əlavə etmək
m["bir"] = 1
m["iki"] = 2
// Dəyər alma
value, ok := m["bir"] // value = 1, ok = true
value, ok = m["üç"] // value = 0 (sıfır dəyər int üçün), ok = false
// Elementi silmək
delete(m, "iki")
// Xəritə üzərində iterasiya (sıra təmin edilmir)
for key, value := range m {
// ...
}
Xəritələri müqayisə etmək: İki xəritə yalnız eyni daxili struktura istinad edirsə, bərabər sayılır, yəni, map1 == map2 yalnız map1 və map2 eyni dəyişəndirsə. == operatoru ilə xəritənin məzmununu müqayisə etmək mümkün deyil. Məzmunu müqayisə etmək üçün hər iki xəritədə iterasiya etmək və elementlərini müqayisə etmək lazımdır.
Performans: Xəritədə giriş, əlavə və silmə əməliyyatlarının orta vaxt mürəkkəbliyi O(1)-dir. Ən pis halda (məsələn, çox sayda hash toqquşması ilə) O(n) vaxt ala bilərlər.