go语言函数作为值、类型,并作为参数传递给另一个函数
go语言编程中,可以用type来定义函数的别名,那么该函数将成为一种类型,因此该类型的变量就拥有相同的参数和返回值。
go语言函数作为值和类型
基本的定义方式
type typeName func(arg1type1, arg2 type2...)(result1 result_type1, result2 result_type2...)
go语言函数作为值和类型有什么用
把go函数当做值或类型,可用于作为函数的参数进行传递,进而用于一些通用接口的设计。
函数作为值和类型实例
package main
import "fmt"
type speak func(string) //用type声明一个函数类型
func man(msg string) {
fmt.Println("我是一个男士,", msg)
}
func woman(msg string) {
fmt.Println("我是一个女士,", msg)
}
func human(msg string, f speak) {
f(msg)
}
func main() {
a := "喜欢打篮球"
b := "喜欢打羽毛球"
human(a, man) //将函数作为值传递
human(b, woman)
}
代码输出:
我是一个男士, 喜欢打篮球
我是一个女士, 喜欢打羽毛球