Middle
Czym jest metoda next w iteratorach i jak jest zaimplementowana?
sobes.tech AI
Odpowiedź od AI
Metoda next w iteratorach odpowiada za pobranie następnego elementu sekwencji. Zazwyczaj zwraca bieżący element i przesuwa wskaźnik wewnętrzny na następny. Jeśli nie ma więcej elementów, metoda powinna sygnalizować koniec iteracji (np. rzucając wyjątek StopIteration w Pythonie lub zwracając specjalną wartość).
W Go iteratory nie są implementowane tak jawnie jak w Pythonie, ale można utworzyć strukturę z metodą Next() bool do przejścia do następnego elementu i metodą Value() T do pobrania bieżącej wartości.
Przykład w 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())
}
}
Tutaj, Next przesuwa pozycję i zwraca true, jeśli jest kolejny element, a Value zwraca bieżący element.