Middle
21
Что такое метод next в итераторах и как он реализуется?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Метод next в итераторах отвечает за получение следующего элемента последовательности. Он обычно возвращает текущий элемент и сдвигает внутренний указатель на следующий. Если элементов больше нет, метод должен сигнализировать об окончании итерации (например, выбрасывать исключение StopIteration в Python или возвращать специальное значение).
В Go итераторы реализуются не так явно, как в Python, но можно создать структуру с методом Next() bool для перехода к следующему элементу и методом Value() T для получения текущего значения.
Пример на Go:
package main
import "fmt"
type IntIterator struct {
data []int
pos int
}
func (it *IntIterator) Next() bool {
if it.pos < len(it.data) {
it.pos++
return true
}
return false
}
func (it *IntIterator) Value() int {
return it.data[it.pos-1]
}
func main() {
it := IntIterator{data: []int{10, 20, 30}}
for it.Next() {
fmt.Println(it.Value())
}
}
Здесь Next сдвигает позицию и возвращает true, если есть следующий элемент, а Value возвращает текущий элемент.