Выбор ответа Middle Слайсы и мапы изнутри обновлено
Полное выражение среза a[low:high:max]
Вопрос
Зачем нужен срез вида a[1:3:3]?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ограничивает cap, чтобы append не затёр исходный массив. Третий индекс задаёт cap = max - low.
Варианты ответа
- Он сразу копирует выбранные элементы в новый массив
- Ограничивает cap, чтобы append не затёр исходный массивправильный ответ
- Он задаёт шаг среза, как
a[1:3:2]в Python - Он делает слайс только для чтения до конца функции
Разбор
Третий индекс задаёт cap = max - low. При cap == len любой append выйдет за ёмкость и выделит новый массив, исходный не пострадает. Сам срез ничего не копирует, это всё ещё окно в тот же массив. Шага у срезов в Go нет. Слайсов только для чтения в языке тоже нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Слайсы и мапы изнутри»
- Разбить слайс на части по k на Go
- Удаление дубликатов с сохранением порядка на Go
- Группировка анаграмм на Go
- Циклический сдвиг слайса на Go
- Число подмассивов с суммой k на Go
- Топ-k частых слов на Go
- Что выведет Go: append при полной ёмкости
- Что выведет Go: два append в один подслайс