最后一个函数怎么理解?
为什么我们在 func
声明后使用不同的函数名称?
如何使用这些功能?像 main
函数中那样使用它是错误的。
package main
import (
"fmt"
)
func main() {
fmt.Println(incrementer()) //error
}
func incrementer() func() int { //what is it?!
i := 0
return func() int {
i++
return i
}
}
最佳答案
这只是意味着该函数正在返回一个不带参数并返回整数的函数。这就是
... func() int
您签名的一部分是这样说的。
您收到的错误是因为您的 fmt.Println 无法打印函数。为了证明这一点,你可以看到如果你调用,你会得到同样的错误,
func main() {
fmt.Println(foo)
}
func foo() int {
return 1
}
如果您这样调用您的函数,可能会更清楚地看到发生了什么。
func main() {
myIncrementer := incrementer()
fmt.Println(myIncrementer()) // Prints 1
}
你在哪里创建增量器,它是一个函数,然后调用返回 1 的函数 function。
关于go - func 关键字后的两个函数名称 - 它是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53940351/