例子
func counter(start int) func(int) int {
f := func(n int) int {
start += n
return start
}
return f
}
func main() {
c := counter(0)
fmt.Println(c(1))
fmt.Println(c(2))
fmt.Println(c(3))
//c(1)
//c(2)
//c(3)
}
func makeSuffixFunc(suffix string) func(string) string {
return func(name string) string {
if !strings.HasSuffix(name,suffix) {
return name + suffix
}
return name
}
}
func main() {
jpgFunc := makeSuffixFunc(".jpg")
txtFunc := makeSuffixFunc(".txt")
fmt.Println(jpgFunc("test.jpg"))
fmt.Println(txtFunc("test"))
}
func circle(radius float64) (func(), func()) {
perimeter := func() {
fmt.Println("周长是:",2 * math.Pi * radius)
}
area := func() {
fmt.Println("面积是:",math.Pi * (radius * radius))
}
return perimeter,area
}
func main() {
f1,f2 := circle(3.3)
f1()
f2()
}
我自己理解的闭包就是:(刚学几天的理解)
闭包相当于一个加工器,给它一个东西,然后它加工处理再返回