欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

go 函数 作为类型 - go语言

程序员文章站 2022-03-11 15:06:25
在Go语言中国 可以把 函数作为一种类型 用 type 定义。利用这种特性 ,可以进行类型转换。 可以用作函数参数的 类型 来约束参数。函数的类型转换类型转换的基本格式如下:type_name(expression)package mainimport "fmt"//声明一个函数类型type CalculateType func(int , int )// 该函数类型实现了一个方法func (c *CalculateType) Server() {fmt.Println...

在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 包 源码例子

 

 

 

 

本文地址:https://blog.csdn.net/u013862108/article/details/107919391

相关标签: go语言