Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了golang日記 - 函数里的构造函数(匿名函数)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

The Go ProgrAMMing Language书的5.6节匿名函数中,有以下代码

func squares() func() int {
    var x int
    return func() int {
        x++
        return x * x
    }
}
func main() {
    f := squares()
    fmt.Println(f()) // "1"
    fmt.Println(f()) // "4"
    fmt.Println(f()) // "9"
    fmt.Println(f()) // "16"
}

先分析一下这段代码

这两个部分,重复的是 func() int{},所以我们可以猜测,这起到链接的作用. 那么这段代码分析下来. squares()返回类型func()匿名函数,使用func()匿名函数后,返回类型int.

这里出现的问题,类型名该不该含有 括号()?
假设是需要括号,那么上面代码就变成

f() := squares()

这样的话导致的问题
1. 函数和数据的界限就变得不清晰,这会导致看代码人不知道实质调用了几次函数
2. 代码变得不简洁,如果我们要重复调用 squares()的匿名函数,这就要多加一些字符,如f().()

函数可以当作类型返回,这让golang的函数变得和Java中的构造函数的表达方式有点像,java类=>Golang函数 Java构造函数=>Golang可无数次调用的匿名函数

大佬总结

以上是大佬教程为你收集整理的golang日記 - 函数里的构造函数(匿名函数)全部内容,希望文章能够帮你解决golang日記 - 函数里的构造函数(匿名函数)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。