Junior — Middle
Kann man eine Leseoperation aus einem Slice durchführen, der vorher nicht initialisiert wurde?
sobes.tech KI
Antwort von AI
In Go sind Slices Strukturen, die einen Zeiger auf ein Array, eine Länge und eine Kapazität enthalten. Wenn ein Slice nicht initialisiert wurde (d.h., es ist nil), führt ein Versuch, daraus zu lesen, zu einem Panic.
Zum Beispiel:
var s []int // nil-Slice
fmt.Println(s[0]) // Panic: Laufzeitfehler: Index außerhalb des Bereichs
Um sicher aus einem Slice zu lesen, muss es initialisiert werden, z.B. mit make oder durch Zuweisung eines bestehenden Arrays:
s := make([]int, 3)
fmt.Println(s[0]) // 0, sicher
Daher ist es nicht möglich, aus einem nicht initialisierten Slice zu lesen — dies führt zu einem Laufzeitfehler.