登录
首页 >  Golang >  Go问答

困惑于示例输出,无法理解返回函数的用法

来源:stackoverflow

时间:2024-02-11 08:39:14 437浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《困惑于示例输出,无法理解返回函数的用法》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

以下示例打印 12。我无法理解此输出。为什么它打印 12 而不是 11?

func fA() func() int {
    i := 0
    return func() int {
        i++
        return i
    }
}
func main() {
   fB := fA()
   fmt.Print(fB())
   fmt.Print(fB())
}

正确答案


它是一个closure。基本上,返回的函数知道在其范围之外定义的变量,因此当您调用fa()时,返回的函数有i = 0,当您调用fb()时,它会增加 i 的值,现在 i = 1。当你再次调用它时,它会再次增加i,现在你有i = 2。如果您使用 fa() 创建一个新函数,这个新函数将有一个新的i。像这样的事情:

fB := fA()
 fC := fA()
 fmt.Print(fB())// 1
 fmt.Print(fB())// 2
 fmt.Print(fC())// 1
 fmt.Print(fB())// 3

以上就是《困惑于示例输出,无法理解返回函数的用法》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>