golang 函数类型

函数类型 又叫 函数签名 , 一个函数 的类型就是函数定义首行去掉函数名、参数名和{,可以 使用 fmt.Printf 的”%T”格式化参数打印函数的类型。

通过type定义函数类型

type typeName func(arguments) retType

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

package main

import "fmt"

func add(a, b int) int {
    return a + b
}

//sub作为函数名可以看成是 op 类型的常量
func sub(a, b int) int {
    return a - b
}

//定义函数类型 op
type op func(a, b int) int

//形参指定传入参数为函数类型op
func Oper(fu op, a, b int) int {
    return fu(a, b)
}

func main() {
    //在go语言中函数名可以看做是函数类型的常量,所以我们可以直接将函数名作为参数传入的函数中。
    aa := Oper(add, 1, 2)
    fmt.Println(aa)
    bb := Oper(sub, 1, 2)
    fmt.Println(bb)
}
 

 

posted @ 2022-03-26 18:17  Mr.peter  阅读(223)  评论(0)    收藏  举报