函数变量
- 在Go语言中函数也是一种类型,函数有多少种形式,函数变量就有多少种写法
var a func() //无参数无返回值 var b func(int) //有一个int类型参数 var c func(int) string //有一个int类型参数和string类型返回值 fmt.Println(a, b, c) //输出:<nil> <nil> <nil>
func main() { var a func() a = func() { fmt.Println("执行函数") } //注意此处没有括号,有括号表示调用函数,变量a就表示接收函数返回值 a() //调用函数 /* 也可以使用短变量方式定义函数变量 等效于 func b(s string){ //... } */ b := func(s string) { fmt.Println("执行第二个函数") } b("参数") //使用定义好的函数 d := c d() //函数名称c也是一个变量 c() } func c() { fmt.Println("c函数") }
- 函数类型变量是除了slice、map、channel、interface外第五种引用类型
func main() { var a func() a = b a() var c func() c = a c() fmt.Printf("%p %p", a, c)//输出地址相同 } func b() { fmt.Println("b") }
函数作为参数或返回值
-
变量可以作为函数的参数或返回值类型.而函数既然可以当做变量看待,函数变量也可以当做函数的参数或返回值
-
函数作为参数时,类型写成对应的类型即可
func main() { a(func(s string) { fmt.Println(s) }) } func a(b func(s string)) { fmt.Println("a执行") b("传递给s的内容") }
- 函数作为返回值
func main() { //此时result指向返回值函数. result := a() //调用函数,才能获取结果 fmt.Println(result()) } func a() func() int { return func() int { return 110 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人