Какой вывод получит программа №44

Программа напечатает [a b x]. Слайс arr[1:2] имеет длину 1 и ёмкость 2, поэтому append заменяет третий элемент общего массива.

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

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

Программа напечатает [a b x]. Слайс arr[1:2] имеет длину 1 и ёмкость 2, поэтому append заменяет третий элемент общего массива.

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

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

Условие

Какой результат будет напечатан после запуска следующего кода?

import (
    "fmt"
)

func Add(sliceParam []string) {
    sliceParam = append(sliceParam, "x")
}

func main() {
    arr := []string{"a", "b", "c"}
    Add(arr[1:2])
    fmt.Println(arr)
}

Ответ

Программа напечатает [a b x]. Слайс arr[1:2] имеет длину 1 и ёмкость 2, поэтому append заменяет третий элемент общего массива.

В Add увеличивается только локальная длина слайса, но запись в backing array видна через arr. Если передать arr[1:2:2], append выделит новый массив и исходный arr останется [a b c]. Возвращать слайс нужно отдельно, если вызывающий должен сохранить новое содержимое расширенного среза.

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

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

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

Подробнее