go-func/stream/collectors/counting.go

34 lines
766 B
Go

package collectors
// Counting 统计结果集数量
type Counting struct {
}
// Supplier 提供容器
func (c *Counting) Supplier() func() interface{} {
return func() interface{} {
return int(0)
}
}
// Accumulator 处理函数
func (c *Counting) Accumulator() func(interface{}, interface{}) interface{} {
return func(identity interface{}, element interface{}) interface{} {
return identity.(int) + 1
}
}
// Combiner 组装结果
func (c *Counting) Combiner() func(interface{}, interface{}) interface{} {
return func(a interface{}, b interface{}) interface{} {
return a.(int) + b.(int)
}
}
// Finisher 收尾处理
func (c *Counting) Finisher() func(interface{}) interface{} {
return func(identity interface{}) interface{} {
return identity
}
}