Sobes.tech
Junior — Middle

Кадом намудҳои додаҳо метавонанд дар контейнери харита ҳамчун калид хизмат кунанд?

sobes.tech AI

Ҷавоб аз AI

Дар Го, калиди дар харита метавонад танҳо аз намудҳои маълумоти муқоисашаванда (comparable) бошад. Ин маъно дорад, ки оператори == бояд барои калид муайян карда шавад.

Намудҳои калиди мувофиқ:

  • Арзишҳои булеӣ (bool)
  • Суммаҳо (int, float64, uint8 ва ғайра)
  • Рамзҳо (string)
  • ишорагарон
  • Каналҳо
  • Интерфейсҳо, агар намудҳои динамик муқоисашаванда бошанд
  • Тасвирҳо, агар ҳамаи майдонҳои онҳо муқоисашаванда бошанд

Мумкин нест, ки ҳамчун калид истифода шаванд:

  • Слайсҳо (slice)
  • Харитаҳо (map)
  • Функсияҳо

Масалан:

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

// Тасвир бо майдонҳои муқоисашаванда
type Point struct {
    X, Y int
}

m2 := make(map[Point]string)
m2[Point{1,2}] = "Як нуқта"

Агар кӯшиш кунед, ки намуде, ки муқоиса намешавад, ҳамчун калид истифода шавад, компилятор хато медиҳад.