Sobes.tech
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.