Middle
Kas yra next metodas iteratoriuose ir kaip jis įgyvendinamas?
sobes.tech AI
Atsakymas iš AI
Iteratoriuose next metodas yra atsakingas už sekos kito elemento gavimą. Paprastai jis grąžina esamą elementą ir perkelia vidinį rodyklį į kitą. Jei daugiau elementų nėra, metodas turi signalizuoti iteracijos pabaigą (pavyzdžiui, išmetant išimtį StopIteration Python'e arba grąžinant specialią reikšmę).
Go kalboje iteratoriai nėra įgyvendinti taip aiškiai kaip Python'e, tačiau galima sukurti struktūrą su metodu Next() bool, kuris pereina prie kito elemento, ir Value() T, kuris grąžina esamą reikšmę.
Pavyzdys Go kalboje:
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())
}
}
Čia, Next perkelia poziciją ir grąžina true, jei yra kitas elementas, o Value grąžina esamą elementą.