Sobes.tech
Junior — Middle

Μπορεί να χρησιμοποιηθεί η τιμή nil ως στοιχείο επανάληψης για το map σε έναν βρόχο;

sobes.tech AI

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

Στο Go, η τιμή nil δεν μπορεί να χρησιμοποιηθεί ως στοιχείο επανάληψης για το map σε έναν βρόχο, επειδή το range στο map επιστρέφει το κλειδί και την τιμή, και το nil αντιπροσωπεύει την απουσία τιμής.

Αν η τιμή στο map είναι δείκτης ή διεπαφή, μπορεί να είναι nil, και αυτό είναι φυσιολογικό. Αλλά ο ίδιος ο επαναληπτής δεν μπορεί να είναι nil.

Παράδειγμα:

m := map[string]*int{
    "a": nil,
    "b": new(int),
}

for k, v := range m {
    αν v == nil {
        fmt.Printf("κλειδί %s περιέχει τιμή nil\n", k)
    } αλλιώς {
        fmt.Printf("κλειδί %s περιέχει την τιμή %d\n", k, *v)
    }
}

Εδώ, το v μπορεί να είναι nil, αλλά ο βρόχος range στο map λειτουργεί σωστά.