Junior — Middle
Kokie duomenų tipai gali būti naudojami kaip raktas map konteineryje?
sobes.tech AI
Atsakymas iš AI
Go kalbant, žemėlapio raktas gali būti tik iš palyginamų (comparable) duomenų tipų. Tai reiškia, kad raktui turi būti apibrėžtas == operatorius.
Tinkami raktų tipai:
- Boolean reikšmės (
bool) - Skaičiai (
int,float64,uint8ir kt.) - Eilutės (
string) - Nuorodos
- Kanalai
- Sąsajos, jei dinaminis tipas yra palyginamas
- Struktūros, jei visi jų laukai yra palyginami
Negalima naudoti kaip rakto:
- Slicing (
slice) - Žemėlapiai (
map) - Funkcijos
Pavyzdys:
m := make(map[string]int)
m["key"] = 42
// Palyginami laukai struktūroje
type Point struct {
X, Y int
}
m2 := make(map[Point]string)
m2[Point{1,2}] = "Taškas"
Jei bandysite naudoti nepalyginamą tipą kaip raktą, kompiliatorius išmes klaidą.