匿名函数
匿名函数不需要函数名称,且可以作为函数返回值类型。如果再函数体最后加(),代表立即执行。
func anonymous(name string) func(){
return func () {
fmt.Println("hello", name)
}
}
func main() {
b := anonymous("kansas")
b()
}
执行结果 : hello,kansas
闭包
通俗的说,闭包 := 匿名函数 + 外层变量的引用。
func makeSuffix(suffix string) func(name string)string{
return func(name string) string {
if !strings.HasSuffix(name,suffix){
return name + suffix
}
return name
}
}
func main() {
res := makeSuffix(".txt")
res2 := res("note")
fmt.Println(res2)
}
输出结果 : note.txt
用于判断是否name有suffix的后缀,这里用到了匿名函数作为返回值。