package main

Будут напечатаны две строки [0], затем возникнет panic: индекс 1 находится за пределами длины nums. Третьего успешного вывода не будет.

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

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

Будут напечатаны две строки [0], затем возникнет panic: индекс 1 находится за пределами длины nums. Третьего успешного вывода не будет.

Подробный разбор

Ответ с пояснениями

Условие

package main import "fmt"

func main() { nums := make([]int, 1, 2) fmt.Println(nums)

appendSlice(nums, 1024)
fmt.Println(nums)

mutateSlice(nums, 1, 512)
fmt.Println(nums)

}

func appendSlice(sl []int, val int) { sl = append(sl, val) }

func mutateSlice(sl []int, idx, val int) { sl[idx] = val }

Ответ

Будут напечатаны две строки [0], затем возникнет panic: индекс 1 находится за пределами длины nums. Третьего успешного вывода не будет.

appendSlice получает копию заголовка слайса. append использует общий массив с capacity 2 и записывает 1024, но новая длина остаётся только в локальном sl. У nums длина по-прежнему 1, а индексация проверяет именно len, не cap. Исправление — вернуть новый слайс и присвоить nums = appendSlice(...), изменив сигнатуру функции.

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

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

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

Подробнее