源码疑惑---求解,这两种写法有什么不同吗?

martin_yyds · · 2132 次点击
jan-bar
想要拥有,必定付出。
`defer`再怎么也得有一定开销吧,而且是在`return`之后才执行`defer` 我看最新版也用了`defer` ```go func (c *cancelCtx) Done() <-chan struct{} { d := c.done.Load() if d != nil { return d.(chan struct{}) } c.mu.Lock() defer c.mu.Unlock() d = c.done.Load() if d == nil { d = make(chan struct{}) c.done.Store(d) } return d.(chan struct{}) } ```
#1
更多评论
没啥不同 写法爱好
#2