go语言闭包问题

package main

import "fmt"

func test() func() int{
    var a int = 10
    return func() int{
        return a
    }
}


func main(){
    fmt.Printf("%d",test())
}

输出的结果是4771344
为什么是这个奇怪的数字?

阅读 227
评论 更新于 2019-09-21
    1 个回答
    zuch
    • 4.1k

    你调用 test() 函数返回的是闭包函数啊,所以你输出的是该函数的地址。

    正确的用法应该是

    fmt.Printf("%d",test()())
    评论 赞赏 2019-09-21
      撰写回答

      登录后参与交流、获取后续更新提醒