匿名函數與閉包
尚硅谷Golang課
匿名函數
func main() {
res := func(n1, n2 int) int {
return n1 + n2
}(10, 20)
fmt.Println(res)
a := func(n1, n2 int) int {
return n1 - n2
}
res = a(10, 5)
fmt.Println(res)
}
閉包
//累加器
func Add() func(int) int { //Add是一個函數,返回的數據類型是func(int) int
var n int = 10 //返回的是一個匿名函數,那這個函數用到函數外的n,因此形成一個整體稱為閉包
return func(x int) int {
n = n + x
return n
//閉包是類,函數是操作,n是字段,函數+使用n構成閉包
//n只初始化一次
}
}
func main() {
a := Add()
fmt.Println(a(1))
fmt.Println(a(2))
fmt.Println(a(3))
}
案例2
func makeSuffix(suffix string) func(string) string {
return func(name string) string {
if !strings.HasSuffix(name, suffix) {
return name + suffix
}
return name
}
}
func main() {
f := makeSuffix(".jpg")
fmt.Println(f("654"))
fmt.Println(f("123.jpg"))
}
上次修改於 2021-08-01
此篇文章的評論功能已經停用。