Middle
Mi az a next metódus az iterátorokban, és hogyan valósítják meg?
sobes.tech MI
Válasz az MI-től
Az iterátorokban a next metódus felelős a következő elem megszerzéséért a sorozatban. Általában visszaadja a jelenlegi elemet, és előre lépteti a belső mutatót a következőre. Ha nincs több elem, a metódusnak jeleznie kell az iteráció végét (például Pythonban StopIteration kivételt dobva vagy egy speciális értéket visszaadva).
Go-ban az iterátorokat nem olyan explicit módon valósítják meg, mint Pythonban, de létrehozhatunk egy struktúrát Next() bool metódussal a következő elemhez való lépéshez és Value() T metódussal a jelenlegi érték lekéréséhez.
Példa Go-ban:
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())
}
}
Itt a Next lépteti a pozíciót és true-t ad vissza, ha van következő elem, a Value pedig az aktuális elemet adja vissza.