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
}
标签:函数,fmt,init,匿名,func,Go,main
From: https://www.cnblogs.com/mafu-blogs/p/17964842