试图理解闭包

仍然是 Go 的新手。我正在尝试写一个闭包:


https://play.golang.org/p/qz-8WFh0mv


package main


import "log"



func myfunc(a int) bool{

  func otherfunc(b int) bool{

    return false

  }

  log.Println(otherfunc(2))

  return true

}


func main() {

        myfunc(1)

    log.Println("here")

}

Python 中的类似函数也可以工作。为什么这在 Go 中不起作用?


动漫人物
浏览 117回答 1
1回答

12345678_0001

您需要将内部 func 定义为局部变量。试试这个func myfunc(a int) bool {  otherfunc := func(b int) bool {    return false  }  log.Println(otherfunc(2))  return true}顺便提一句。otherfunc := func(b int) bool {是简写var otherfunc func(int) bool = func(b int) bool {看看这些例子https://gobyexample.com/closureshttps://gobyexample.com/variables
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go