Init函数入口与Import导包

Init函数

在执行main函数之前,会先一步进入init函数入口。

Import导入

需注意项目路径。

且使用 [包名].[方法] 调用包方法。

包命名
1
2
3
4
5
6
7
8
9
10
11
//在包名之前可另存包名

import{

_ "package1" :无法调用包方法,但调用该包的Init函数。

mylib1 "package2"

. "package3"

}
包前缀 含义
_ 匿名
. 省略包名
[name] 别名

Golang指针

与C语言一致,使用*表地址,使用&以引用变量地址。

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
//值传递,仅改变函数空间中的p值
func XVchange(p int){

p=10
...
}

//地址传递,可改变传入形参所在地址的值
func XAchange(p *int){

*p=10
...
}

func main(){
var a int=1
XVchange(a)
fmt.Println(a)
XAchange(a)
fmt.Println(a)
}

输出结果:
1
10

Golang支持二级指针,例如 **p .

关键字defer

  • defer + [函数语句] :在当前函数生命周期结束之前,将执行defer后语句。

  • defer关键字采用栈辅助,多个defer语句中,后输入的defer语句先执行。

  • 在函数return后,执行defer语句。

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
func deferfunc()int{
fmt.Println("call defer")
return 0
}
func returnfunc()int{
fmt.Println("call return")
return 0
}

func test()int{

defer deferfunc()

return returnfunc()
}

func main() {

test()

}

输出结果:
call return
call defer