golang 闭包笔记

Posted by Jason on Thursday, January 3, 2019

TOC

闭包

初遇闭包

func A() {
     ....
     func() {
        rw.RLock() 
        defer rw.UnRLock() 
        ....
     }()
     ....
     
}()

该函数是k8s中源码部分函数,在阅读源码时奇怪作者为什么会使用闭包?

  • 不假思索觉得是因为:因为该部分代码只想调用一次,如果提取出来其他人会调用,所以用闭包+.+! 但是再仔细一想,不让别人调用干嘛要提出一个函数呢。。。
  • 观察该函数中defer关键字后,进一步思考:如果没有闭包,那这个函数体中执行的代码会怎样?defer的范围会扩大!
  • 仔细思考后,在这里使用闭包考虑主要是想降低锁的粒度。

深入思考

「真诚赞赏,手留余香」

Jason Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付


comments powered by Disqus