package main
import "fmt"
type iterator struct {
data []int
index int // 索引
}
// 通过简单工厂函数构造一个实例对象
func newIterator(data []int) *iterator {
return &iterator{data: data}
}
// 判断迭代器是否能迭代
func (iter *iterator) HasNext() bool {
if iter.data == nil || len(iter.data) == 0 {
return false
}
return iter.index < len(iter.data)
}
// 迭代器迭代数据
func (iter *iterator) Next() int {
defer func() {
iter.index++
}() // 延時函數在Next函數調用結束後執行defer函數
return iter.data[iter.index]
//iter.index++
}
func main() {
ints := []int{1, 2, 3, 4, 5}
iterator := newIterator(ints)
for iterator.HasNext() {
fmt.Println(iterator.Next())
}
}
go实现一个简单切片迭代器
发布时间 2023-04-01 14:38:01作者: 流走在黑夜深巷的猫