Go语言的type func()用法

golang通过type定义函数类型

在 Go 语言中,type 可以定义任何自定义的类型

比如熟悉的:type dog struct{}type myInt int 等等

所以 func 也是可以作为类型自定义的,type myFunc func(int) int,意思是自定义了一个叫 myFunc 的函数类型,这个函数的签名必须符合输入为 int,输出为 int。

golang通过type定义函数类型

通过 type 可以定义函数类型,格式如下

type typeName func(arguments) retType

函数类型也是一种类型,故可以将其定义为函数入参 ,在 go 语言中函数名可以看做是函数类型的常量,所以我们可以直接将函数名作为参数传入的函数中。

demo

package main

import "fmt"

//add函数也实现了op的函数签名,可以被认为是op的一种实现
func add(a, b int) int {
	return a + b
}

//sub符合op的签名,所以函数名可以看成是 op 类型的常量或者实现
func sub(a, b int) int {
	return a - b
}

//定义函数类型 op 的签名
type op func(a, b int) int

//这个函数的第一个参数指定了一个函数签名op,只要符合op函数签名的函数,就可以作为参数传入
func Oper(fu op, a, b int) int {
	return fu(a, b)
}

func main() {
	//在go语言中函数名可以看做是函数类型的常量,所以我们可以直接将函数名作为参数传入的函数中。
	aa := Oper(add, 1, 2)
	fmt.Println(aa)
	bb := Oper(sub, 1, 2)
	fmt.Println(bb)
}
posted @   厚礼蝎  阅读(145)  评论(0编辑  收藏  举报
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示