package main
import "log"
func main() {
nexta := nextA([][]int{
[]int{1, 2, 3},
[]int{4, 5, 6},
[]int{7, 8},
})
for {
v, ok := nexta()
if !ok {
break
}
log.Println("v:", v)
}
}
func nextA(ss [][]int) func() (int, bool) {
idx := -1
ssIdx := 0
ca := []int{}
return func() (i int, b bool) {
if len(ca) == 0 {
ca = ss[ssIdx]
}
idx++
if len(ca) <= idx {
//尝试补充数组
ssIdx++
if len(ss) > ssIdx {
ca = ss[ssIdx]
idx = 0
goto HERE
}
return 0, false
}
HERE:
return ca[idx], true
}
}
网友评论