Junior — Middle
Használhatók-e szerkezetek kulcsként asszociatív tömbben vagy térképen?
sobes.tech MI
Válasz az MI-től
Go-ban a térképen lévő kulcsok csak olyan típusok lehetnek, amelyek támogatják az összehasonlítást (== operátor). Az struktúrák akkor használhatók kulcsként, ha minden mezőjük összehasonlítható. Például, ha egy struktúra csak alapvető típusokat (int, string stb.) tartalmaz, akkor kulcsként használható. Ha azonban a struktúra szeleteket, térképeket vagy függvényeket tartalmaz, akkor nem használható kulcsként.
Példa:
package main
import "fmt"
type Point struct {
X, Y int
}
func main() {
m := make(map[Point]string)
p := Point{X: 1, Y: 2}
m[p] = "pont"
fmt.Println(m[p]) // kimenet: pont
}
Ha a struktúra nem összehasonlítható mezőket tartalmaz, a fordító hibát fog jelezni.