Sobes.tech
Middle

Kalit sifatida qanday ma'lumot turlari ishlatilishi mumkin?

sobes.tech AI

AIdan javob

Go tilida, xarita kalitlari faqat taqqoslash operatsiyasini (==) qoʻllab-quvvatlaydigan tiplarga ega boʻlishi mumkin. Bu, hash jadvalida kalitni qidirishda kalitlarni tenglik boʻyicha taqqoslash zarurligi bilan bogʻliq.

Kalit sifatida ishlatilishi mumkin boʻlgan turlar:

  • Asosiy turlar: int, float64, string, bool va boshqalar
  • Koʻrsatkichlar
  • Agar ularning barcha maydonlari taqqoslanadigan boʻlsa, tuzilmalar
  • Elementlari taqqoslanadigan massivlar

Kalit sifatida ishlatilishi mumkin boʻlmagan turlar:

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

Bu, bu turlar == yordamida taqqoslashni qoʻllab-quvvatlamasligi bilan bogʻliq.

Misol:

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

// Taqqoslanadigan maydonlarga ega struktur
 type Point struct {
     X, Y int
 }

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

Agar siz slicing yoki mapni kalit sifatida ishlatishga harakat qilsangiz, kompilyator xato beradi.