Программа напечатает [0 0 0 0 0 0 0 0 0 0] []. Первый слайс имеет длину 10, второй — 0, хотя capacity у обоих равна 10.
Какой текст выведет программа на Go (пример 59)
Программа напечатает [0 0 0 0 0 0 0 0 0 0] []. Первый слайс имеет длину 10, второй — 0, хотя capacity у обоих равна 10.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой вывод появится в консоли после запуска следующей программы на Go.
import "fmt"
func main() {
a:=make([]int, 10)
b:=make([]int, 0, 10)
fmt.Println(a,b)
}
Ответ
Программа напечатает [0 0 0 0 0 0 0 0 0 0] []. Первый слайс имеет длину 10, второй — 0, хотя capacity у обоих равна 10.
make([]int,10) создаёт десять доступных элементов с нулевыми значениями. make([]int,0,10) резервирует ёмкость для будущих append, но пока не содержит элементов. Индексация b[0] до увеличения длины вызовет panic, несмотря на достаточную capacity.