1. 程式人生 > 其它 >go閉包

go閉包

閉包的實現思路

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)) }