🔴 Сложный · 3 очк. Массивы и слайсы
Что выведет: s := []int{1,2,3,4,5}; s2 := s[1:3:3]; s2 = append(s2, 99); fmt.Println(s[3])?
A 99
B 4
C 3
D panic
Объяснение вопроса

Трёхиндексный срез s[1:3:3] задаёт не только границы [1:3], но и ограничивает ёмкость: cap(s2)=2. При append(s2, 99) ёмкости не хватает - выделяется новый массив, и 99 пишется уже в него. Исходный слайс s не меняется. Поэтому s[3] остаётся 4. Без третьего индекса (full slice expression) срез s[1:3] имел бы cap=4, и append мог бы перезаписать s[3].

s := []int{1, 2, 3, 4, 5}
s2 := s[1:3:3]
s2 = append(s2, 99)
fmt.Println(s[3])  // 4
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.