参考博客: https://blog.csdn.net/zchdjb/article/details/90725435
package main
import "fmt"
func main() {
fc := func() {
fmt.Println("print fc")
}
fmt.Printf("fc:%T\n", fc)
fc()
myMsg := func(msg string) {
fmt.Println("msg:", msg)
}
fmt.Printf("myMsg type:%T\n", myMsg)
myMsg("这是啥")
msg := MsgFunc(func(msg string) {
fmt.Println("这样玩的?", msg)
})
fmt.Printf("msg:%T\n", msg)
msg("玩出什么花样来?")
a := CalculateType(add)
m := CalculateType(mul)
a(2, 3)
m(2, 3)
a.Serve()
m.Serve()
fmt.Println("add", Calculate(2, 3, addRtn))
fmt.Println("mul", Calculate(2, 3, mulRtn))
}
type MsgFunc func(msg string)
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)
}
//加法函数
func addRtn(a, b int) int {
return a + b
}
//乘法函数
func mulRtn(a, b int) int {
return a * b
}
type CalculateRtnType func(int, int) int //声明一个带返回值的函数类型
func Calculate(a int, b int, f CalculateRtnType) int {
return f(a, b)
}