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()怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341