package main
import (
"fmt"
"strings"
)
//go语言对闭包的 定义就是在函数内部去引用函数外部的变量 称为闭包 并且闭包是可以返回一个函数的 相对于python 闭包的执行是 需要先定义一个变量来接受闭包函数返回的值 然后一 接收变量()进行执行闭包 而python可以使用装饰器进行给一个函数加上闭包@闭包
// 闭包第一阶段
func calc(x, y int) func() {
fmt.Println("我是第一个函数")
return func() {
fmt.Println("我是二个函数")
}
}
func main() {
//var re = calc(1, 2) //调用calc函数 返回的func进行再次调用
//re() //调用函数的函数
var result = sub("xxxx")
var re = result(".txt")
fmt.Println(re)
}
// 闭包第二阶段 //判断闭包就是看是否引用外部变量
func sub(name string) func(names string) string {
return func(names string) string {
if !strings.HasSuffix(name, names) { //如果我传入name的结尾不等于.txt 就返回 name+names = xxx.txt 等于就返回name(xxxx)
var result_name = name + names
return result_name
}
return name
}
}
//闭包第三阶段
最后修改:2022 年 11 月 29 日 03 : 50 PM
© 允许规范转载