理解Golang的闭包
闭包是指一个函数值(function value),它可以引用其函数体之外的变量
闭包代码示例
func makeSuffix() func(str string) string {
var suffix = ".jpg"
return func(str string) string {
if strings.HasSuffix(str, suffix) {
return str
} else {
// 引用函数体之外的变量suffix
return str + suffix
}
}
}
func main() {
// 创建闭包函数
closure := makeSuffix()
// 调用闭包函数
fmt.Println(closure("this"))
fmt.Println(closure("that.jpg"))
}
个人理解:通过变量+函数function巧妙地调用了函数(在不修改函数function的条件下)