go 函数类型使用

2018-07-23  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读