Sobes.tech
Senior

Εξασφαλίζει το map τη σειρά ανάγνωσης δεδομένων;

sobes.tech AI

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

Στη Go, ο ενσωματωτος τύπος map δεν εγγυάται τη σειρά διαδρομής των στοιχείων κατά την ανάγνωση. Η επανάληψη σε ένα map γίνεται σε μια ψευδοτυχαία σειρά, η οποία μπορεί να αλλάξει σε κάθε εκτέλεση του προγράμματος. Αν χρειάζεται μια ταξινομημένη διαδρομή, πρέπει να αποθηκεύσετε επιπλέον τα κλειδιά σε ένα slice και να τα ταξινομήσετε πριν από την επανάληψη.

Παράδειγμα διαδρομής ενός map με ταξινόμηση των κλειδιών:

m := map[string]int{"b": 2, "a": 1, "c": 3}

// Λήψη κλειδιών
keys := make([]string, 0, len(m))
for k := range m {
    keys = append(keys, k)
}

// Ταξινόμηση κλειδιών
sort.Strings(keys)

// Διαδρομή με ταξινομημένα κλειδιά
for _, k := range keys {
    fmt.Println(k, m[k])
}