Sobes.tech
Junior — Middle

Welchen Wert speichert der Slice, wenn er definiert wurde, aber nicht explizit durch Initialisierung erstellt wurde?

sobes.tech KI

Antwort von AI

Если срез (slice) в Go объявлен, но не инициализирован явно (например, var s []int), то он имеет значение nil. Такой срез не указывает на какой-либо массив и его длина и ёмкость равны нулю.

Это отличается от пустого среза, который создаётся, например, так: s := []int{} — он не равен nil, но тоже имеет длину 0.

Пример:

var s []int
fmt.Println(s == nil) // true
fmt.Println(len(s))    // 0

s = []int{}
fmt.Println(s == nil) // false
fmt.Println(len(s))    // 0

Таким образом, необъявленный явно срез хранит значение nil.