Переменная value в range — копия элемента, поэтому её изменение не переписывает исходный слайс. Без записи по индексу можно построить новый слайс через append и присвоить результат.
Как изменить исходный слайс без индексов и указателей, используя более идиоматичный Go-подход (range/value/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 и присвойте его у вызывающего. Для изменения именно исходных элементов обычно нужен индекс или ссылка на элемент.