Sobes.tech
Middle

Τι τύποι δεδομένων μπορούν να χρησιμοποιηθούν ως κλειδιά;

sobes.tech AI

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

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

Τύποι που μπορούν να χρησιμοποιηθούν ως κλειδιά:

  • Πρωταρχικοί τύποι: int, float64, string, bool κ.ά.
  • Δείκτες
  • Δομές, αν όλα τα πεδία τους είναι συγκρίσιμα
  • Πίνακες, αν τα στοιχεία τους είναι συγκρίσιμα

Τύποι που δεν μπορούν να χρησιμοποιηθούν ως κλειδιά:

  • Λωρίδες (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}] = "Ένα σημείο"

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