go 函数类型
在go中,函数也可以被当成数据类型
e.g:下面有两个函数,+、-,然后定义了一个函数类型FuncType1,然后对funcType1附于不同的函数,则funcType1就可以执行相应的函数
package main
import (
"fmt"
_ "testinit"
)
func main() {
a:=10
b:=10
var funcType1 FuncType1 = Add1
fmt.Println(funcType1(a,b))
funcType1 = Minus1
fmt.Println(funcType1(a,b))
}
func init() {
fmt.Println("main init()")
}
func Add1(a,b int) int {
return a+b
}
func Minus1(a,b int) int {
return a-b
}
//定义函数类型
type FuncType1 func(int,int) int
这样就是对funcType1附了两次值,还可以进一步调整,如下
package main
import (
"fmt"
_ "testinit"
)
func main() {
a:=10
b:=10
/*var funcType1 FuncType1 = Add1
fmt.Println(funcType1(a,b))
funcType1 = Minus1
fmt.Println(funcType1(a,b))*/
fmt.Println(Cal(a,b,Add1))
fmt.Println(Cal(a,b,Minus1))
}
func init() {
fmt.Println("main init()")
}
func Add1(a,b int) int {
return a+b
}
func Minus1(a,b int) int {
return a-b
}
type FuncType1 func(int,int) int
//定义函数,将函数类型当成一种函数参数
func Cal(a,b int,funcType FuncType1) (result int) {
return funcType(a,b)
}
定义一个新的函数,将函数类型当成一种函数参数,这样就可以不用给函数类型附值,而直接用,方便了很多,也灵活了很多
posted on 2018-11-12 14:43 Cream.icend 阅读(1448) 评论(0) 收藏 举报
浙公网安备 33010602011771号