Это канал про ИТ | Менторство: codewaste.ru | Отзывы: @codewaste_feedback | Запись: @gardiys_support | Мой аккаунт: @gardiys | Личный канал: @scherbakanton | YouTube: https://www.youtube.com/@codewaste
ИП Щербак А.О.
ОГРНИП 324237500502901
Post #140
237
⚡️Вопросы с собесов
Сначала отвечай сам и только потом проверяй ответ 👇
Стек: Go
Вопрос:
«В чем главные подводные камни функции append при работе со слайсами?»
Ответ:
Слайс - это лишь «обертка» над базовым массивом. Главный подводный камень заключается в том, что если несколько слайсов ссылаются на один и тот же массив, изменение элементов через один слайс затронет и все остальные.
Но ситуация резко меняется при вызове
С этого момента связь между слайсами разрывается! Ваш обновленный слайс начнет смотреть на новый участок памяти, а старые слайсы продолжат смотреть на старый. Это частый источник трудноуловимых багов, когда разработчик думает, что мутирует исходные данные, а по факту работает уже с независимой копией.
Пиши свой вариант ответа в комментарии 👇
Сначала отвечай сам и только потом проверяй ответ 👇
Стек: Go
Вопрос:
«В чем главные подводные камни функции append при работе со слайсами?»
Ответ:
Слайс - это лишь «обертка» над базовым массивом. Главный подводный камень заключается в том, что если несколько слайсов ссылаются на один и тот же массив, изменение элементов через один слайс затронет и все остальные.
Но ситуация резко меняется при вызове
append. Если при добавлении элемента текущая вместимость (capacity) слайса превышена, Go выделит в памяти новый массив, скопирует туда данные и добавит новый элемент.С этого момента связь между слайсами разрывается! Ваш обновленный слайс начнет смотреть на новый участок памяти, а старые слайсы продолжат смотреть на старый. Это частый источник трудноуловимых багов, когда разработчик думает, что мутирует исходные данные, а по факту работает уже с независимой копией.
Пиши свой вариант ответа в комментарии 👇



