golang日記 - 函数里的构造函数(匿名函数)
发布时间:2020-12-16 18:13:39 所属栏目:大数据 来源:网络整理
导读: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"
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()
这样的话导致的问题 函数可以当作类型返回,这让golang的函数变得和Java中的构造函数的表达方式有点像,Java类=>Golang函数 Java构造函数=>Golang可无数次调用的匿名函数 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |