go 函数中的匿名函数
資深大佬 : yujianwjj 1
看 go 开源项目代码的时候,发现下面这种写法
func f() { a, err := func() (int, error){ .... }() ... }
我的疑问是这种写法有什么优点吗,感觉完全没必要啊。
大佬有話說 (20)
看 go 开源项目代码的时候,发现下面这种写法
func f() { a, err := func() (int, error){ .... }() ... }
我的疑问是这种写法有什么优点吗,感觉完全没必要啊。
1. go 出一个协程
2. defer 处理一些东西
目前我的使用场景和 #5 差不多,有时候不用想函数命名挺爽的
查看代码的时候,我只需要知道这里是有一个 a, 但我并不关心这个 a 是怎么得来的(究竟它是求余得来的,还是经过其他复杂的运算)
这个 a 的计算,对于这个函数 f 的整个过程并不重要,重要的是有 a 这个值;接着,我就可以利用 IDE 的功能,把这个匿名函数的代码块折叠起来,那下一行,就继续是这个函数 f 的核心代码,继续往下看,避免不必要的干扰
毕竟有时候,求 a 这个值的时候,可能需要创建很多临时变量来使得代码清晰,但这部分计算逻辑又不复用,抽出一个函数又好像没有必要,命名又犯头痛