Go'da Map veri tipi nasıl çalışır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Map — Go dilinde sıralanmamış "anahtar-değer" çiftleri koleksiyonudur.
Özellikler:
- Anahtarlar karşılaştırılabilir veri türleri olmalıdır (sayılar, dizgeler, booleanler, göstericiler, kanallar, arayüzler, eğer dinamik tür karşılaştırılabilir ise, ve elemanları karşılaştırılabilir olan diziler). Dilim (slice), fonksiyonlar ve diğer mapler anahtar olarak kullanılamaz.
- Değerler herhangi bir veri türünde olabilir.
- Map, referans tipi olduğu için, map türünde bir değişken, bellekteki map veri yapısına işaret eden bir gösterici içerir. Bir değişken aracılığıyla yapılan değişiklikler, aynı map’e referans eden diğer değişkenlerde de görülecektir.
- Map için sıfır değer
nil'dir.nilmap’e yazılamaz; denemek panik ile sonuçlanır. - Map’in boyutu, eleman ekleme veya silme işlemleriyle dinamik olarak değişir.
İç yapısı: Go’daki map, bir hash tablosu (hash table) olarak uygulanır. Her anahtar hashlenir ve hash sonucu, ilişkili değerin tablodaki konumunu belirlemek için kullanılır.
// Map oluşturma
m := make(map[string]int)
// Eleman ekleme
m["bir"] = 1
m["iki"] = 2
// Değer alma
value, ok := m["bir"] // value = 1, ok = true
value, ok = m["üç"] // value = 0 (sıfır değeri int için), ok = false
// Eleman silme
delete(m, "iki")
// Map üzerinde yineleme (sıra garanti edilmez)
for key, value := range m {
// ...
}
Map karşılaştırması: İki map, yalnızca aynı iç yapıya işaret ediyorsa eşit kabul edilir, yani map1 == map2 yalnızca map1 ve map2 aynı değişkense geçerlidir. Map’in içeriği == operatörüyle karşılaştırılamaz. İçeriği karşılaştırmak için her iki map üzerinde yineleme yapıp elemanlarını karşılaştırmak gerekir.
Performans: Map’te erişim, ekleme ve silme işlemleri ortalama O(1) zaman karmaşıklığına sahiptir. En kötü durumda (örneğin, çok sayıda hash çakışması varsa) O(n) zaman alabilirler.