go 怎么实现func的自定义参数

参考解析

题目来源:滴滴

答案:

在 golang中,type 可以定义任何自定义的类型

func 也是可以作为类型自定义的,type myFunc func(int) int,意思是自定义了一个叫 myFunc 的函数类型,这个函数的签名必须符合输入为 int,输出为 int。

golang通过type定义函数类型
通过 type 可以定义函数类型,格式如下

  1. type typeName func(arguments) retType

函数类型也是一种类型,故可以将其定义为函数入参,在 go 语言中函数名可以看做是函数类型的常量,所以我们可以直接将函数名作为参数传入的函数中。

  1. package main
  2. import "fmt"
  3. func add(a, b int) int {
  4. return a + b
  5. }
  6. //sub作为函数名可以看成是 op 类型的常量
  7. func sub(a, b int) int {
  8. return a - b
  9. }
  10. //定义函数类型 op
  11. type op func(a, b int) int
  12. //形参指定传入参数为函数类型op
  13. func Oper(fu op, a, b int) int {
  14. return fu(a, b)
  15. }
  16. func main() {
  17. //在go语言中函数名可以看做是函数类型的常量,所以我们可以直接将函数名作为参数传入的函数中。
  18. aa := Oper(add, 1, 2)
  19. fmt.Println(aa)
  20. bb := Oper(sub, 1, 2)
  21. fmt.Println(bb)
  22. }