Sobes.tech
Middle

¿Qué es el método next en los iteradores y cómo se implementa?

sobes.tech AI

Respuesta de la IA

El método next en los iteradores es responsable de obtener el siguiente elemento de la secuencia. Normalmente devuelve el elemento actual y avanza el puntero interno al siguiente. Si ya no hay más elementos, el método debe indicar el fin de la iteración (por ejemplo, lanzando una excepción StopIteration en Python o devolviendo un valor especial).

En Go, los iteradores no se implementan de manera tan explícita como en Python, pero se puede crear una estructura con un método Next() bool para avanzar al siguiente elemento y un método Value() T para obtener el valor actual.

Ejemplo en 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())
    }
}

Aquí, Next avanza la posición y devuelve true si hay un siguiente elemento, y Value devuelve el elemento actual.