init函数
init函数介绍
每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被GO运行框架调用,init会在main函数前被调用
代码示例:
package main
import "fmt"
func init() {
fmt.Println("init()...")
}
func main(){
fmt.Println("main()...")
}
init函数的注意事项
1,一个文件同时包含全局变量定义,init函数和main函数,执行的流程全局变量定义--init函数--main函数
package main
import "fmt"
var age = test()
func test() int {
fmt.Println("test()")
return 80
}
func init () {
fmt.Println("init()...")
}
func main(){
fmt.Println("main()...age", age)
}
2,init函数最主要的作用,就是完成一些初始化的工作
utils包下的utils.go文件
package utils
import "fmt"
var Age int
var Name string
func init(){
fmt.Println("utils 包的 init()...")
Age = 45
Name = "jet"
}
main.go
package main
import (
"awesomeProject/exercise01/utils"
"fmt"
)
var age = test()
func test() int {
fmt.Println("test()")
return 80
}
func init () {
fmt.Println("init()...")
}
func main(){
fmt.Println("main()...age", age)
fmt.Println("Age=",utils.Age,"name",utils.Name)
}
3,main.go和utils.go 都含有变量定义,init函数时,执行的流程如下:
- utils.go文件执行变量定义
- utils.go文件执行init函数
- main.go文件导入utils.go包,执行变量定义
- main.go文件执行init函数
- main.go文件执行main函数
匿名函数
匿名函数介绍
Golang支持匿名函数,匿名函数就是没有名字的函数,如果我们某个函数只是希望使用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用
匿名函数使用方式一
在定义匿名函数时就直接调用,这种方式匿名函数只能调用一次
package main
import "fmt"
func main() {
res1 := func(n1 int, n2 int) int {
return n1 + n2
}(5,10)
fmt.Println("res1=",res1)
}
匿名函数使用方式二
将匿名函数赋给一个变量(函数变量),再通过该变量来调用匿名函数
package main
import "fmt"
func main() {
a := func (n1 int, n2 int) int {
return n1 - n2
}
res2 := a(10, 30)
fmt.Println("res2=",res2)
res3 := a(90, 30)
fmt.Println("res3=", res3)
}
全局匿名函数
如果将匿名函数赋给一个全局变量,那么这个匿名函数,就会成为一个全局匿名函数,可以在程序有效
package main
import "fmt"
func main() {
var(
Fun1 = func(n1 int, n2 int) int {
return n1 * n2
}
)
res4 :=Fun1(6,9)
fmt.Println("res4",res4)
}