Sobes.tech
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, uint8 ir 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ą.