Sobes.tech
Middle

Kokie duomenų tipai gali būti naudojami kaip raktai?

sobes.tech AI

Atsakymas iš AI

Go kalba, žemėlapio raktai gali būti tik tie tipai, kurie palaiko palyginimo operaciją (==). Tai yra todėl, kad paieškai žemėlapyje reikalinga lyginant raktus.

Tipai, kuriuos galima naudoti kaip raktus:

  • Pagrindiniai tipai: int, float64, string, bool ir kt.
  • Nuorodos
  • Struktūros, jei visi jų laukai yra palyginami
  • Masyvai, jei elementai yra palyginami

Tipai, kurių naudoti kaip raktus negalima:

  • Slicing (slice)
  • Žemėlapiai (map)
  • Funkcijos

Tai yra todėl, kad šie tipai nepalaiko palyginimo naudojant ==.

Pavyzdys:

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

// Struktūra su palyginamiems laukais
 type Point struct {
     X, Y int
 }

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

Jei bandysite naudoti slicing ar map kaip raktą, kompiliatorius pateiks klaidą.