go閉包
阿新 • • 發佈:2022-04-05
閉包的實現思路
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)) }