go函数定义遇到的困惑

f1200gs · · 1049 次点击
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
更多评论
函数放外面,不要加分号
#1
* 关于申明:**拥有函数名的函数只能在包级别语法块中被声明**,这句话来自Go语言圣经: https://books.studygolang.com/gopl-zh/ch5/ch5-06.html * 关于分号:参见2.3.4: https://books.studygolang.com/gopl-zh/ch2/ch2-03.html * 关于匿名函数参见2楼或上述链接里的匿名函数 * 关于你python代码,我真看不见
#3