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  }