Middle
Какво е методът next при итераторите и как се реализира?
sobes.tech AI
Отговор от 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 връща текущия елемент.