一、概念
go中的闭包可以理解为一个返回值也是函数的函数中,这个返回值的函数引用的是外层函数中的变量值,则称这个返回值函数跟被引用的局部变量组成了一个闭包。
闭包的优势是满足了局部变量只能在闭包中使用,保证了安全性,而且生命周期跟随被调用的方法一致
二、代码
例子1
、、、
package main
import "fmt"
func Adder() func(int) int {
var x int
return func(j int) int {
x += j
return x
}
}
func main() {
var f = Adder()
fmt.Println(f(1))
fmt.Println(f(20))
fmt.Println(f(300))
}
、、、
例子2
、、、
package main
import (
"fmt"
"strings"
)
//闭包练习
func makeSuffixFunc(suffix string) func(string) string {
return func(name string) string {
if !strings.HasSuffix(name, suffix) {
return name + suffix
}
return name
}
}
func main() {
f1 := makeSuffixFunc(".jpg")
f2 := makeSuffixFunc(".png")
fmt.Println(f1("test"))
fmt.Println(f2("png"))
}
、、、
三、图片


网友评论