Golang 中函数作为值与类型

参考博客: 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)
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值