Sobes.tech
Junior — Middle

Ποιοι τύποι δεδομένων μπορούν να λειτουργήσουν ως κλειδί σε ένα δοχείο map;

sobes.tech AI

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

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

Κατάλληλοι τύποι κλειδιών:

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

Δεν μπορούν να χρησιμοποιηθούν ως κλειδί:

  • Λωρίδες (slice)
  • Χάρτες (map)
  • Συναρτήσεις

Παράδειγμα:

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

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

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

Αν προσπαθήσετε να χρησιμοποιήσετε έναν τύπο που δεν είναι συγκρίσιμος ως κλειδί, ο μεταγλωττιστής θα εμφανίσει σφάλμα.