跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • go 函数中的匿名函数
未分類
25 3 月 2021

go 函数中的匿名函数

go 函数中的匿名函数

資深大佬 : yujianwjj 1

看 go 开源项目代码的时候,发现下面这种写法

func f() {   a, err := func() (int, error){       ....   }()   ... } 

我的疑问是这种写法有什么优点吗,感觉完全没必要啊。

大佬有話說 (20)

  • 資深大佬 : Jirajine

    能开一个新的 scope,能避免命名冲突、逻辑封装。
    不过这种 IIFE 的写法真够丑陋的。

  • 資深大佬 : yzbythesea

    不推荐

  • 資深大佬 : 2379920898

    我想到了脱了裤子放屁

  • 資深大佬 : Wincer

    在一个函数内创建的匿名函数能直接使用以及修改这个函数内的所有变量(当然变量定义需要在匿名函数之前),如果要写另一个函数做这个事的话,得把使用的变量作为参数传入(如果要修改还得传指针)。我能想到的优点就只有这个了

  • 資深大佬 : bruce0

    我能想到的匿名函数用处

    1. go 出一个协程

    2. defer 处理一些东西

  • 資深大佬 : meiyoumingzi6

    用作闭包之类的, 类似 python 装饰器实现

  • 資深大佬 : xx6412223

    这种写法就是欠打

  • 資深大佬 : cominghome

    你举的这个例子确有脱裤子放屁的嫌疑

    目前我的使用场景和 #5 差不多,有时候不用想函数命名挺爽的

  • 資深大佬 : liyunlong41

    之前看开源代码时,也看到有这种写法,是跟锁有关的代码,这样写可以用 defer 自动释放锁,防止忘记释放,同时也可以最小化锁的临界区。

  • 資深大佬 : sarvatathagata

    怕不是 js 写习惯了

  • 資深大佬 : iceheart

    嵌套循环什么的,一个 return 就跳出去了,就这点好处

  • 資深大佬 : liuminghao233

    匿名函数在 for 里面可以用 defer 来管理 mutex

  • 資深大佬 : sxfscool

    一般是用 defer 的

  • 資深大佬 : ry_wang

    通过函数调用有时可以避免使用 goto

  • 資深大佬 : darrh00

    写程序最难一点的就是给函数命名,可能纯粹是想不到好名字吧?

  • 資深大佬 : User9901

    多加一些类似的,用于生成免杀恶意程序。
    增加分析难度。

  • 資深大佬 : YYYeung

    除了新开一个作用域的有点外,还有就是

    查看代码的时候,我只需要知道这里是有一个 a, 但我并不关心这个 a 是怎么得来的(究竟它是求余得来的,还是经过其他复杂的运算)

    这个 a 的计算,对于这个函数 f 的整个过程并不重要,重要的是有 a 这个值;接着,我就可以利用 IDE 的功能,把这个匿名函数的代码块折叠起来,那下一行,就继续是这个函数 f 的核心代码,继续往下看,避免不必要的干扰

    毕竟有时候,求 a 这个值的时候,可能需要创建很多临时变量来使得代码清晰,但这部分计算逻辑又不复用,抽出一个函数又好像没有必要,命名又犯头痛

  • 資深大佬 : YYYeung

    @YYYeung typo: 除了新开一个作用域的「优点」外

  • 資深大佬 : yunyuyuan

    js 习惯了,文件开头就是(function(){})()

  • 資深大佬 : HUNYXV

    比如作为一个参数传递到工作池

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具