go 函数 作为类型 - go语言

在Go语言中国 可以把 函数作为一种类型 用 type 定义。利用这种特性 ,可以进行类型转换。 可以用作函数参数的 类型 来约束参数。

函数的类型转换

类型转换的基本格式如下:

type_name(expression)

package main

import "fmt"

//声明一个函数类型
type CalculateType func(int , int )

// 该函数类型实现了一个方法
func (c *CalculateType) Server() {
	fmt.Println("我是一个函数类型")
}

//加法函数
func add(a, b int) {
	fmt.Println( a + b)
}

//乘法函数
func mul(a, b int){
	fmt.Println( a * b)
}

func main() {
	//加add 函数强制转换成 CalculateType类型
	a := CalculateType(add)
	//将mul函数强制转换成 CalculateType类型
	b := CalculateType(mul)

	a(2, 3)
	b(2, 3)
	a.Server()
	b.Server()
}

//5
//6
//我是一个函数类型
//我是一个函数类型

// 如上,声明了一个Calculate Type 函数类型,并实现Serve() 方法,并将拥有相同参数的 add 和 mul 强制转换成

 

如上,声明了一个Calculate Type 函数类型,并实现Serve() 方法,并将拥有相同参数的 add 和 mul 强制转换成

函数 作为 形参的类型

package main

import "fmt"

//声明一个函数类型
type CalculateType func(int , int )


//加法函数
func add(a, b int) {
	fmt.Println( a + b)
}

//乘法函数
func mul(a, b int){
	fmt.Println( a * b)
}

func Calculate(a, b int, f CalculateType)  {
	f(a, b)
}

func main() {
	a, b := 2,3

	Calculate(a, b, add)
	Calculate(a, b, mul)
}

//5
//6

//如上例子,Calculate 的 f 参数 类型为 CalculateType , add 和 mul  函数 具有和 CalculateType 函数类型相同的 参数和返回值,
//因此 可以将 add 和 mul 函数作为参数传入 Calculate 函数中
如上例子,Calculate 的 f 参数 类型为 CalculateType , add 和 mul  函数 具有和 CalculateType 函数类型相同的 参数和返回值,
因此 可以将 add 和 mul 函数作为参数传入 Calculate 函数中

net/http 包 源码例子

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值