Sobes.tech
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.