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,uint8jne) - 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.