为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 GO 中使用函数类型声明函数

如何在 GO 中使用函数类型声明函数

Go
郎朗坤 2021-09-13 19:57:41
假设你声明了一个函数类型type mapFunc func(value int) int你可以使用这种类型来声明一个函数而不复制它吗?就像是:doubleIt := mapFunc {    return 2*value}
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

据我所知,最短的方法仍然是:


doubleIt := func (value int) int {

    return value * 2

}

所以它并没有变得更短,而且我认为将函数签名与其主体分离不会更具可读性。声明命名的 func 类型的好处是在其他声明中使用它。


doubleId := mapFunc(func...)由于类型标识规则,不需要额外的转换:


如果两个函数类型相同,则它们具有相同数量的参数和结果值,对应的参数和结果类型相同,并且两个函数都是可变参数或两者都不是。参数和结果名称不需要匹配。


查看完整回答
反对 回复 2021-09-13
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

当然,您可以像任何其他预先声明的类型一样func是一流的类型,尽管以这种方式声明它没有多大意义:


package main


import "fmt"


// You need not a named argument for a named type

type mapFunc func(int) int


func main() {

        doubleIt := mapFunc(func(value int) int { return value * 2})

        fmt.Println(doubleIt(2))      // 4

}

这是为了说明函数只是 Go 中的另一种类型,可以像任何其他命名类型一样对待。


查看完整回答
反对 回复 2021-09-13
  • 2 回答
  • 0 关注
  • 245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信