Middle
Ce este metoda next în iteratori și cum este implementată?
sobes.tech AI
Răspuns de la AI
Metoda next în iteratori este responsabilă pentru obținerea elementului următor din secvență. De obicei, returnează elementul curent și mută indicatorul intern la următorul. Dacă nu mai există elemente, metoda trebuie să semnaleze sfârșitul iterării (de exemplu, aruncând o excepție StopIteration în Python sau returnând o valoare specială).
În Go, iteratorii nu sunt implementați atât de explicit ca în Python, dar se poate crea o structură cu o metodă Next() bool pentru a trece la următorul element și o metodă Value() T pentru a obține valoarea curentă.
Exemplu în 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())
}
}
Aici, Next mută poziția și returnează true dacă există un element următor, iar Value returnează elementul curent.