github.com/songzhibin97/gkit@v1.2.13/internal/stat/iterator.go (about) 1 package stat 2 3 import "fmt" 4 5 // Iterator 迭代窗口中所有桶 6 type Iterator struct { 7 count int 8 iteratedCount int 9 cur *Bucket 10 } 11 12 // Next 返回 true 表示已经全部迭代完毕 13 func (i *Iterator) Next() bool { 14 return i.count != i.iteratedCount 15 } 16 17 // Bucket 获取当前存储通 18 func (i *Iterator) Bucket() Bucket { 19 if !(i.Next()) { 20 panic(fmt.Errorf("stat/iterator: iteration out of range iteratedCount: %d count: %d", i.iteratedCount, i.count)) 21 } 22 bucket := *i.cur 23 i.iteratedCount++ 24 i.cur = i.cur.Next() 25 return bucket 26 }