Sobes.tech
Middle

O que é o método next nos iteradores e como é que ele é implementado?

sobes.tech IA

Resposta da IA

O método next nos iteradores é responsável por obter o próximo elemento da sequência. Normalmente, ele retorna o elemento atual e avança o ponteiro interno para o próximo. Se não houver mais elementos, o método deve sinalizar o fim da iteração (por exemplo, lançando uma exceção StopIteration em Python ou retornando um valor especial).

Em Go, os iteradores não são implementados de forma tão explícita como em Python, mas é possível criar uma estrutura com um método Next() bool para avançar para o próximo elemento e um método Value() T para obter o valor atual.

Exemplo em 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())
    }
}

Aqui, Next avança a posição e retorna true se há o próximo elemento, e Value retorna o elemento atual.