在python中可以这么写:
```python
def haha():
def ha():
return "000"
return ha()
```
但是如果在go中定义的话就会遇到问题,为什么
```go
func main(){
//下面三个如果定义在main函数中就会报错 为什么
func squeare(n int) int { return n * n};
func negative(n int) int { return -n};
func product(m, n int) int { return m*n};
}
```
编译报错:
`syntax error: unexpected squeare, expecting (`
请问这是为什么呢 ,可以从哪里查找资料?
更多评论
Go中的函数也是第一类对象,可以按下面这三种形式实现:
``` go
package main
import(
"fmt"
)
func main(){
result1 := haha1()()
fmt.Println(result1)
result2 := haha2()()
fmt.Println(result2)
result3 := haha3()()
fmt.Println(result3)
}
//返回匿名局部函数
func haha1() func() string {
return func() string {
return "000"
}
}
//返回具名局部函数
func haha2() func() string {
ha := func() string {
return "000"
}
return ha
}
//返回具名包级函数
func haha3() func() string {
return ha
}
func ha() string {
return "000"
}
```
#2