今天在阅读fabric底层链码的时候,看到了type func,一时间不知道什么含义,通过自己的搜索资料,现在算是明白了一点,现在就赶紧记下来:
type myFunc func(int) int //定义了一个函数类型,叫myFunc ,规定输入是int,输出也是int
func (f myFunc) sum (a, b int) int {
res := a + b
return f(res) //这里其实等价于,sum10(res),具体视在主函数中赋给什么具体函数!
}
func sum10(num int) int {
return num * 10
}
func sum100(num int) int {
return num * 100
}
func handlerSum(handler myFunc, a, b int) int {
res := handler.sum(a, b)
fmt.Println(res)
return res
}
func main() {
newFunc1 := myFunc(sum10) //这里表示,将sum10的类型转换为myFunc,赋给newFunc1,其实这个时候,newFunc1等价于sum10!(因为sum10函数输入是int,输出是int,符合自定义myFunc的类型)
newFunc2 := myFunc(sum100)
handlerSum(newFunc1, 1, 1) // 20
handlerSum(newFunc2, 1, 1) // 200
}