go语言中的type func的用法

58 篇文章 2 订阅
51 篇文章 5 订阅

今天在阅读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
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值