Sobes.tech
Junior — Middle

Millised andmetüübid võivad toimida võtmena kaardikonteinendis?

sobes.tech AI

Vastus AI-lt

Go-s, kaardi võti võib olla ainult võrdlemiseks (comparable) sobivatest andmetüüpidest. See tähendab, et võtme jaoks peab olema määratletud == operaator.

Sobivad võtmetüübid:

  • Tõeväärtused (bool)
  • Numbrid (int, float64, uint8 jne)
  • Ridad (string)
  • Viited
  • Kanalid
  • Liidesed, kui dünaamiline tüüp on võrdlemiseks sobiv
  • Struktuurid, kui kõik nende väljad on võrdlemiseks sobivad

Ei tohi kasutada võtmena:

  • Sliced arrays (slice)
  • Kaardid (map)
  • Funktsioonid

Näide:

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

// Võrdlemiseks sobivad väljad struktuuris
type Point struct {
    X, Y int
}

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

Kui püüate kasutada mitte-võrdlemiseks sobivat tüüpi võtmena, annab kompilaator vea.