Выбор ответа Senior Дженерики обновлено
Итераторы iter.Seq в Go 1.23
Вопрос
Что такое iter.Seq[V] в Go 1.23?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Функция func(yield func(V) bool), по ней работает range. В Go 1.23 range научился ходить по функциям-итераторам. iter.Seq[V] это func(yield func(V) bool): итератор вызывает yield на каждом элементе и останавливается, если yield вернул false (тело цикла сделало break).
Варианты ответа
- Новый встроенный тип коллекции, похожий на слайс с ленивой загрузкой
- Канал, который итератор заполняет в отдельной горутине
- Интерфейс с методами Next и Value, как Iterator в Java
- Функция
func(yield func(V) bool), по ней работает rangeправильный ответ
Разбор
В Go 1.23 range научился ходить по функциям-итераторам. iter.Seq[V] это func(yield func(V) bool): итератор вызывает yield на каждом элементе и останавливается, если yield вернул false (тело цикла сделало break). Никаких горутин и каналов, это обычные вызовы функций. Интерфейса Next/Value нет, хотя iter.Pull умеет превратить push-итератор в pull-стиль.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.