在看前辈的代码时,发现了一个缓存放穿透的处理,好奇就点进去看了,发现代码意外的少,于是就研究起来,为数不多我能看明白的源码T-T
源码地址:https://cs.opensource.google/go/x/sync/+/036812b2:singleflight/singleflight.go
```go
type call struct {
wg sync.WaitGroup
val interface{}
err error
forgotten bool
// 统计被拦截调用fn的请求数,可以不关心
dups int
// DoChan 中用的,先不关心
chans []chan 0
}
// 调用fn()
func (g Group) doCall(c call, key string, fn func() (interface{}, error)) {
normalReturn := false