千家信息网

Go语言的type func()怎么用

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要为大家展示了"Go语言的type func()怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Go语言的type func()怎么用"这篇
千家信息网最后更新 2025年02月02日Go语言的type func()怎么用

这篇文章主要为大家展示了"Go语言的type func()怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Go语言的type func()怎么用"这篇文章吧。

一、前置基础

1. go 函数基础

在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。

func 函数名(参数列表) 返回值类型 {函数体内部}

Go语言是强数据类型的语言,参数是要指定类型的不然就报错。func 是函数的声明关键字。

1) 返回值
返回值的定义,是可以给返回值取一个名称的,还有一点是和其他的编程语言不一样的是在Go语言中函数的返回值可以有多个的

func addTwoNumber(a int, b int) (int, int) {return a+b, a-b}

同时可以给返回值取一个别名

func addTwoNumber(a int, b int) (sum, dif int) {return a+b, a-b}

像这样给返回值取完名字后可以给返回值直接赋值

func addTwoNumber(a int, b int) (sum, dif int) {sum = a+bdif = a-breturn}

同样这样也是可以直接返回sum,和dif两个值的。

2) 函数可变参数

func sum(numbers ...int) int {s := 0for i := range numbers{s += i}return s}func main() {fmt.Println(sum(1,2,3,4,5))}

像这样我们就可以传给sum函数多个值了。

2. 函数签名

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

函数类型相同
两个函数类型相同的条件是**:拥有相同的形参列表和返回值列表(列表元素的次序、个数和类型都相同),形参名可以不同 。** 以下 3 个函数的函数类型完全一样。

func add (a , b int) int { return a + b }func sub (c int, d int) int { return c - d }func mul (e int, f int) int { return e * f }

验证demo

package mainimport "fmt"func add(a, b int) int     { return a + b }func sub(c int, d int) int { return c - d }func mul(e int, f int) int { return e * f }func main() {        fmt.Printf("%T\n", add)        fmt.Printf("%T\n", sub)        fmt.Printf("%T\n", mul)}

执行go run test.go输出结果如下:

func(int, int) int
func(int, int) int
func(int, int) int

二、Go语言的type func()用法 | type func() 自定义函数类型

1. golang通过type定义函数类型

在 Go 语言中,type 可以定义任何自定义的类型

比如熟悉的:type dog struct{},type myInt int 等等

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

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

type typeName func(arguments) retType

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

验证demo

package mainimport "fmt"func add(a, b int) int {        return a + b}//sub作为函数名可以看成是 op 类型的常量func sub(a, b int) int {        return a - b//定义函数类型 optype op func(a, b int) int//形参指定传入参数为函数类型opfunc 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)

以上是"Go语言的type func()怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0