闭包的实现思路
package main import "fmt" //闭包的基本思路 func f2(x,y int){ fmt.Println("this is f2") sum:=x+y fmt.Println(sum) } func f3 ( ff func (int,int),m,n int ) func() { tmp:=func(){ ff(m,n) } return tmp } func f1( f func() ) { f() } func main() { ret:=f3(f2,100,200) f1(ret) }
使用案例1
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(){ jpgFunc:=makeSuffixFunc(".jpg") txtFunc:=makeSuffixFunc(".txt") fmt.Println(jpgFunc("哈哈")) fmt.Println(txtFunc("哈哈")) }
使用案例2
package main import "fmt" //闭包第二个应用模拟计算器 func calc(base int) ( func( int ) int , func( int ) int ){ add:=func(i int ) int { base+=i return base } sub:=func (i int) int { base-=i return base } return add ,sub } func main(){ f1,f2:=calc(10) fmt.Println(f1(1)) fmt.Println(f2(2)) }