函数类型:
package main
import (
"fmt"
)
func add(a, b int) int {
return a + b
}
type FuncType func(int, int) int // 定义函数类型
func main() {
var fTest FuncType
fTest = add // 函数赋值给函数类型,只要参数和返回值类型都相同即可赋值,可用此方法来实现多态
res := fTest(1, 1)
fmt.Println(res)
}多态:
package main
import "fmt"
// 定义类型
type FuncType func(int, int) int
func Calc(a, b int, f FuncType) (result int) {
result = f(a, b)
return
}
func add(a, b int) (result int) {
return a + b
}
func minus(a, b int) (result int) {
return a - b
}
func mult(a, b int) (result int) {
return a * b
}
func main() {
// 多态
ret := Calc(10, 20, add)
fmt.Println(ret)
ret = Calc(10, 20, minus)
fmt.Println(ret)
}