🔴 Сложный · 3 очк. Массивы и слайсы
Что выведет: a := make([]int, 2, 4); b := append(a, 1); _ = append(a, 2); fmt.Println(b[2])?
A 1
B 2
C 0
D panic: index out of range
Объяснение вопроса

Оба вызова append(a, 1) и append(a, 2) работают с одним и тем же базовым массивом (ёмкость 4, хватает). Первый append записывает 1 в позицию с индексом 2 и возвращает слайс b. Второй append снова использует тот же массив и записывает 2 в ту же позицию [2], перезаписывая 1. В итоге b[2] равно 2. Это классическая ловушка разделяемой ёмкости.

a := make([]int, 2, 4)
b := append(a, 1)
_ = append(a, 2)
fmt.Println(b[2])  // 2
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.