Golang 基础值速学之十九(函数作为值与类型)
在go语言当中,我们可以把函数作为一种变量,用type去定义它,那么这个函数类型就可以作为值传递,甚至可以实现方法,这一特性实在太灵活了,有时候我们甚至可以利用这一特性进行类型转换,作为值传递的条件是类型具有相同的参数以及相同的返回值
函数类型转换
Go语言的类型转换的基本格式如下:
type_name(expression)
上代码:
package main
import (
"fmt"
"sync"
)
func main() {
//函数的类型转换
//将add()函数强制转换为我们自定义的CalculateType()类型
zhAdd := CalculateType(add)
//那么zhAdd就可以调用CalculateType()函数类型实现的方法Serve()
zhAdd.Serve()
//也可以直接使用 往函数体当中传参
zhAdd(1,2)
//函数作为参数传递
mute := CalMute(1, 2, add1)
fmt.Println(mute)
}
//函数作为类型
type CalculateType func(int,int)
//通过函数类型实现的方法
func (c *CalculateType) Serve() {
fmt.Println("我是函数类型")
}
//配合函数的类型转换
func add(a,b int){
fmt.Println(a+b)
}
//配合函数的类型转换
func mul(a,b int) {
fmt.Println(a*b)
}
//函数作为参数传递
//声明一个函数类型
type CalculateTypeParma func(int,int) int
//配合函数作为参数传递
func add1(a,b int) int {
return a+b
}
//配合函数作为参数传递
func mul2(a,b int) int {
return a*b
}
//传入a b 和 函数名称 即 将函数作为参数传递进来
func CalMute(a,b int,f CalculateTypeParma) int {
return f(a,b)
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: