• 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))
    }
  • 相关阅读:
    poj3686 Windys
    poj3155 Hard Life
    luoguP2774 方格取数问题
    poj3469 Dual Core CPU
    poj3281 Dining
    luogu P3410 拍照
    离散化
    最短路(SPFA)
    lower_bound && upper_bound
    gcd
  • 原文地址:https://www.cnblogs.com/zh718594493/p/16104495.html
Copyright © 2020-2023  润新知