查看上一篇channel类型请点我
golang中可以用type定义函数类型,定义的类型可以当作参数进行传递,废话不多说,直接上例子
package main
import "fmt"
type FuncType func(int, int) int //通过关键字type定义函数类型
func Add(a, b int) (c int){
c = a + b
return
}
func Sub(a, b int) (c int){
c = a - b
return
}
//多态,回调函数
func Cacl(a, b int, fun FuncType) (result int) {
result = fun(a, b)
return
}
func main() {
var res int
res = Cacl(3, 1, Add)
fmt.Println("a + b = ", res)
res = Cacl(3, 1, Sub)
fmt.Println("a - b = ", res)
}
运行结果:
a + b = 4
a - b = 2
查看下一篇切片类型请点我