Sobes.tech
Junior — Middle

Ποιοι τύποι δεδομένων επιτρέπονται ως κλειδιά για τη δομή map;

sobes.tech AI

Απάντηση από AI

Στο Go, τα κλειδιά για έναν χάρτη μπορούν να είναι μόνο τύποι δεδομένων που υποστηρίζουν την λειτουργία σύγκρισης (συγκρίσιμα). Αυτό σημαίνει ότι τα κλειδιά μπορούν να είναι:

  • Αληθής τιμές (bool)
  • Αριθμοί (int, float, complex κ.λπ.)
  • Συμβολοσειρές (string)
  • Δείκτες
  • Διεπαφές, αν ο δυναμικός τύπος υποστηρίζει σύγκριση
  • Δομές, αν όλα τα πεδία τους είναι συγκρίσιμα

Δεν μπορούν να χρησιμοποιηθούν slices, χάρτες, συναρτήσεις και άλλοι τύποι που δεν υποστηρίζουν σύγκριση ως κλειδιά, επειδή δεν υποστηρίζουν τον τελεστή ==.

Παράδειγμα:

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

// Δομή με συγκρίσιμα πεδία
type Point struct {
    X, Y int
}

m2 := make(map[Point]string)
m2[Point{1,2}] = "Ένα σημείο"