Как изменить исходный слайс без индексов и указателей, используя более идиоматичный Go-подход (range/value/append)?

Переменная value в range — копия элемента, поэтому её изменение не переписывает исходный слайс. Без записи по индексу можно построить новый слайс через append и присвоить результат.

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

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

Переменная value в range — копия элемента, поэтому её изменение не переписывает исходный слайс. Без записи по индексу можно построить новый слайс через append и присвоить результат.

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

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

Переменная value в range — копия элемента, поэтому её изменение не переписывает исходный слайс. Без записи по индексу можно построить новый слайс через append и присвоить результат.

Пример преобразования чисел:

out := make([]int, 0, len(s))
for _, value := range s {
    out = append(out, value*2)
}
s = out

Это замена слайса, а не изменение прежнего массива на месте: другие ссылки на старый массив останутся прежними. В функции верните out и присвойте его у вызывающего. Для изменения именно исходных элементов обычно нужен индекс или ссылка на элемент.

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

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

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

Подробнее