试图了解闭包

时间:2016-02-27 04:37:42

标签: go

对不起,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?

1 个答案:

答案 0 :(得分:1)

您需要将内部函数定义为局部变量。试试这个

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/closures

https://gobyexample.com/variables