【发布时间】:2018-06-25 16:01:35
【问题描述】:
谁能解释为什么打印的是 0 和 1 而不是其他任何东西?谢谢!
func makeFunction(name string) func() {
fmt.Println("00000")
return func() {
makeFunction2("abcef")
}
}
func makeFunction2(name string) func() {
fmt.Println("11111")
return func() {
makeFunction3("safsf")
}
}
func makeFunction3(name string) func() {
fmt.Println("33333")
return func() {
fmt.Printf("444444")
}
}
func main() {
f := makeFunction("hellooo")
f()
}
谁能解释为什么打印的是 0 和 1 而不是其他任何东西?谢谢!
【问题讨论】:
-
因为您从不调用
makeFunction3,它的返回值,并且从不打印name值?我不确定你的期望。 -
如果您要调用具有相同签名的函数链,我建议您看一下在 Go 中实现 FSM(有限状态机)。这不是一个成熟的 FSM,但它提供了本质,这使得这些任务更加清晰。请参阅 Rob Pike youtu.be/HxaD_trXwRE?t=14m7s 的这一部分
标签: go nested-function