Junior — Middle
Czy można wykonać operację odczytu danych z wycinka, który nie został uprzednio zainicjalizowany?
sobes.tech AI
Odpowiedź od AI
W Go, slices to struktury zawierające wskaźnik na tablicę, długość i pojemność. Jeśli slice nie został zainicjalizowany (czyli jest równy nil), próba odczytu z niego spowoduje panikę.
Na przykład:
var s []int // nil-slice
fmt.Println(s[0]) // panic: błąd czasu wykonania: indeks poza zakresem
Aby bezpiecznie odczytać z slice'a, musi on zostać zainicjalizowany, na przykład za pomocą make lub przypisania istniejącej tablicy:
s := make([]int, 3)
fmt.Println(s[0]) // 0, bezpiecznie
W związku z tym, nie można odczytywać z niezainicjalizowanego slice'a — spowoduje to błąd w czasie wykonywania.