文章目录

singleflight

// 执行并返回给定函数的结果,确保对于给定的键+fn只执行1次
// 如果有重复的进来,重复的调用者会等待最原始的调用完成并收到相同的结果
// 返回值 shared 指示是否将 v 提供给多个调用者
// 返回值 v 是 fn 的执行结果
// 返回值 err 是 fn 返回的 err
func (g *Group) Do(key string, fn func()(any, error)) (v any, err error, shared bool)
// 和 Do 类似,但返回一个 channel, 用来接收结果. Result 是一个结构体,有3个字段(Do返回的那3个)
func (g *Group) DoChan(key string, fn func() (any, error)) <-chan Result
// 不走Do的流程,直接调用fn回调
func (g *Group) Forget(key string)