Sobes.tech
Junior — Middle

Map konteynerida kalit sifatida qanday ma'lumot turlari ishlatilishi mumkin?

sobes.tech AI

AIdan javob

Go'da, xarita kaliti faqat solishtiriladigan (solishtiriladigan) ma'lumot turlaridan bo'lishi mumkin. Bu shuni anglatadiki, kalit uchun == operatori belgilangan bo'lishi kerak.

Mos keladigan kalit turlari:

  • Boolean qiymatlar (bool)
  • Raqamlar (int, float64, uint8 va boshqalar)
  • Satrlar (string)
  • Ko'rsatkichlar
  • Kanallar
  • Interfeyslar, agar dinamik tur solishtiriladigan bo'lsa
  • Tuzilmalar, agar ularning barcha maydonlari solishtiriladigan bo'lsa

Kalit sifatida ishlatib bo'lmaydiganlar:

  • Slicing (slice)
  • Xaritalar (map)
  • Funktsiyalar

Misol:

m := make(map[string]int)
m["key"] = 42

// Solishtiriladigan maydonlarga ega tuzilma
type Point struct {
    X, Y int
}

m2 := make(map[Point]string)
m2[Point{1,2}] = "Bir nuqta"

Agar solishtirilmaydigan turni kalit sifatida ishlatishga harakat qilsangiz, kompilyator xato beradi.