Какой текст выведет программа на Go (пример 59)

Программа напечатает [0 0 0 0 0 0 0 0 0 0] []. Первый слайс имеет длину 10, второй — 0, хотя capacity у обоих равна 10.

Короткий ответ

Что ответить на собеседовании

Программа напечатает [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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее