go的context的Done 源码函数
```
func (c *cancelCtx) Done() <-chan struct{} {
c.mu.Lock()
if c.done == nil {
c.done = make(chan struct{})
}
d := c.done
c.mu.Unlock()
return d
}
```
把末尾的三行代码替换成下面
```
defer c.mu.Unlock()
return c.done
```
请问大家,这两种写法有否是有差异呢?源码为什么要新建个变量再返回呢
有疑问加站长微信联系(非本文作者)