美文网首页
go 函数类型使用

go 函数类型使用

作者: 我就是小政政 | 来源:发表于2018-07-23 21:10 被阅读0次
    函数变量 函数作为值
    // 声明函数类型
     35 ⇥   type myfunc func() string
    // 声明函数变量
     36 ⇥   fn := func() string { return "bbb" }
    // 声明map
     38 ⇥   myMap := make(map[string]myfunc)
    // map赋值
     39 ⇥   myMap["fn"] = fn
     40
     41 ⇥   fmt.Println("调用fn:", myMap["fn"]())
     42 ⇥   fmt.Println("显示fn:", myMap["fn"])
     43 ⇥   fmt.Println("显示fn:", fn)
     44 ⇥   fmt.Println("调用fn:", fn())
    

    输出:

    调用fn: bbb
    显示fn: 0x10946c0
    显示fn: 0x10946c0
    调用fn: bbb
    
    函数作为另一个函数的参数
    package main
    
    import "fmt"
    
    // Greeting function types
    type Greeting func(name string) string
    
    // 函数作为另一个函数的参数
    func say(g Greeting, n string) {
        fmt.Println(g(n))
    }
    
    func english(name string) string {
        return "Hello, " + name
    }
    
    func main() {
        say(english, "World")
    }
    
    为函数类型添加方法
    package main
    
    import "fmt"
    
    // Greeting function types
    type Greeting func(name string) string
    
    // 为Greeting函数类型 添加方法
    func (g Greeting) say(n string) {
        fmt.Println(g(n))
    }
    
    func english(name string) string {
        return "Hello, " + name
    }
    
    func main() {
        g := Greeting(english)
        g.say("World")
    }
    

    输出:
    Hello World

    相关文章

      网友评论

          本文标题:go 函数类型使用

          本文链接:https://www.haomeiwen.com/subject/ochsmftx.html