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}] = "Ένα σημείο"
Αν προσπαθήσετε να χρησιμοποιήσετε μια λωρίδα ή έναν χάρτη ως κλειδί, ο μεταγλωττιστής θα εμφανίσει σφάλμα.