Go中init函数和匿名函数
init函数:
每一个源文件中都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用,也就是init会在Main函数之前被调用。通常可以在init函数中完成初始化工作。
import "fmt" func main() { fmt.Println("main函数")//后输出 } func init() { fmt.Println("init方法")//先输出 }
细节说明:
- 如果一个文件同时包含全局变量定义,init函数和main函数,则执行的流程全局变量定义->init函数->main函数。
package main import "fmt" // 变量定义 var age = test() // 为了看到全局变量先被初始化的我们这里先写一个函数 func test() int { fmt.Println("test函数") return 90 } func main() { fmt.Println("main函数,age=", age) } func init() { fmt.Println("init方法") } //输出内容 //test函数 //init方法 //main函数,age= 90
- init函数最主要的作用就是完成一些初始化工作。
package utils var Age int var Name string // 初始化Age和Name 这样其他文件就可以直接用其变量了 func init() { Age = 100 Name = "tom" }
- 如果A文件到入了B文件,都含有全局变量,init函数,那么执行流程是怎么样的?
匿名函数:
匿名函数就是没有名字的函数,如果我们某个函数只是希望调用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用。
使用方式1:在定义的时候就直接调用,这种方式的匿名函数只能调用一次。
package main import "fmt" func main() { //求两个数之和,匿名函数 result := func(n1 int, n2 int) int { return n1 + n2 }(10, 20) fmt.Println("result:", result)//30 }
使用方式2:将匿名函数赋值给一个变量,再通过该变量来调用匿名函数。
package main import "fmt" func main() { //把匿名函数赋值给变量a a := func(n1 int, n2 int) int { return n1 - n2 } //注意a不是函数名,可以调用多次 result2 := a(10, 7) fmt.Println("result2:", result2)//3 }
全局匿名函数:
如果我们把匿名函数赋值给一个全局变量,那么这个匿名函数就是一个全局匿名函数,可以在整个程序中有效。
package main import "fmt" var ( //func1就是一个全局匿名函数 func1 = func(n1 int, n2 int) int { return n1 * n2 } ) func main() { //使用全局匿名函数 result3 := func1(4, 9) fmt.Println("result3:", result3) //36 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY