2022-4-18 实习Day17

1、新贸金系统汇出汇款业务手动测试。–3小时 30%
2、新一代贸金系统汇款业务操作手册修改完毕 –3小时 100%

Golang编程学习(part 12)

1、init函数

每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用,也就是说init会在main函数前被调用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func init() {
fmt.Println("init执行了!!!")
}

func main() {
fmt.Println("main()...")
}

init执行了!!!
main()...

2、init函数注意事项和细节

① 如果一个文件同时包含全局变量定义init函数main函数,则执行的流程为全局变量定义—>init函数—>main函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import "fmt"

var age = test()

// 为了看到全局变量是先被初始化的,我们这里是先写函数
func test() int {

fmt.Println("test()") //1
return 90
}

// init函数,通常可以在init函数中完成初始化工作
func init() {
fmt.Println(age) //2
fmt.Println("init执行了!!!") //3
}

func main() {
fmt.Println("main()...age=", age) //4
}

test()
90
init执行了!!!
main()...age= 90
② init函数最主要的作用就是完成一些初始化的工作,比如下列案例
1
2
3
4
5
6
7
8
9
10
11
12
package utils
import "fmt"
var Age int
var Name string

// Age 和 Name是全局变量,我们需要在main.go使用,但是我们需要初始化Age 和 Name
// init 函数完成初始化工作
func init(){
fmt.Println("utils 包的 init()...")
Age = 100
Name="tom~"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
"fmt"
"pkgOne/main/utils"
)

var age = test()

// 为了看到全局变量是先被初始化的,我们这里是先写函数
func test() int {

fmt.Println("test()") //1
return 90
}

// init函数,通常可以在init函数中完成初始化工作
func init() {
fmt.Println(age) //2
fmt.Println("init执行了!!!") //3
}

func main() {
fmt.Println("main()...age=", age) //4
fmt.Println("Age=", utils.Age, "Name=", utils.Name)
}

1
2
3
4
5
6
7
8
9
10
11
utils 包的 init()...

test()

90

init执行了!!!

main()...age= 90

Age= 100 Name= tom~
③ 细节说明:面试题,如果main.go 和 utils.go 都含有变量定义,init函数时,执行的流程又是怎么样的呢?

image-20220425230357822