Middle
Итераторлордо next ыкмасы эмне жана ал кандай ишке ашырылат?
sobes.tech AI
AIден жооп
Итераторлордо next методу кезектеги элементти алуу үчүн жоопкерчилик жүктөлгөн. Ал адатта учурдагы элементти кайтарып, ички көрсөткүчтү кийинкисине жылдырат. Эгер элементтер бүтүп калса, метод итерациянын аяктоо белгисин көрсөтүшү керек (мисалы, Pythonда StopIteration ката чыгарып же атайын маанини кайтарып).
Goда итераторлор Pythonдогудай так көрүнбөйт, бирок Next() bool методу менен структура түзүп, Value() T методу менен учурдагы маанини алса болот.
Мисал 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())
}
}
Бул жерде, Next позицияны жылдырып, эгер кийинки элемент бар болсо, true кайтарат, ал эми Value учурдагы элементти кайтарат.