Junior — Middle
Ποιες ενέργειες επιτρέπονται κατά την εργασία με ένα slice σε Go αν δεν έχει αρχικοποιηθεί ρητά;
sobes.tech AI
Απάντηση από AI
Στο Go, αν ένα slice δεν έχει αρχικοποιηθεί ρητά (δηλαδή, έχει την τιμή nil), μπορούν να γίνουν τα εξής:
- Έλεγχος αν είναι
nil(π.χ.,if slice == nil), κάτι που είναι χρήσιμο για τον προσδιορισμό αν το slice έχει αρχικοποιηθεί. - Λήψη μήκους και χωρητικότητας με
len(slice)καιcap(slice). Για έναnilslice, το μήκος και η χωρητικότητα είναι 0. - Χρήση του τελεστή
appendγια την προσθήκη στοιχείων. Τοappendθα δημιουργήσει αυτόματα ένα νέο slice με κατανεμημένη μνήμη αν το αρχικό slice είναιnil.
Ωστόσο, δεν μπορείτε να προσπελάσετε στοιχεία του slice με δείκτη αν είναι nil ή κενό, καθώς αυτό θα προκαλέσει panic.
Παράδειγμα:
var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s)) // 0
s = append(s, 1) // τώρα το s έχει αρχικοποιηθεί και περιέχει [1]