Sobes.tech
Junior — Middle

Koja su ograničenja i karakteristike korišćenja ključeva u strukturi podataka map?

sobes.tech АИ

Одговор од АИ

U Go, ključevi u mapi moraju ispunjavati određene zahteve:

  • Ključ mora biti porediv: To znači da tip ključa mora podržavati operacije poređenja == i !=. Na primer, osnovni tipovi (int, string, bool), pokazivači, strukture i nizovi, ako su svi njihovi atributi poredivi.

  • Ne može se koristiti slice, mape i funkcije kao ključevi: Ovi tipovi nisu poredivi i izazvaće grešku pri kompilaciji.

  • Karakteristike:

    • Strukture mogu biti ključevi ako su svi njihovi atributi poredivi.
    • Ako struktura sadrži atribut tipa slice ili mapa, ne može biti ključ.
  • Performanse: Korišćenje velikih struktura kao ključeva može biti neefikasno zbog kopiranja.

Primer:

m := make(map[string]int) // string je validan ključ

// Nevažeći ključ:
// m2 := make(map[[]int]string) // greška pri kompilaciji

// Struktura sa poredivim atributima:
 type Point struct { X, Y int }
 m3 := make(map[Point]string)
 m3[Point{1,2}] = "A"

Dakle, prilikom izbora ključa, važno je razmotriti njegovu poredivost i nemutabilnost.