go 函数类型使用
函数变量 函数作为值
// 声明函数类型
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
网友评论