继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Go 快速入门指南 - init 函数

洋鱼土豆
关注TA
已关注
手记 37
粉丝 0
获赞 0

概述

init() 函数 是一个特殊的函数,一般称为初始化函数,不能被调用。 在每个文件里面,当程序启动或者文件被作为包引用的时候, init() 函数就会自动执行,一般用来做一些包的初始化操作。

语法规则

init() 函数 没有参数,也没有返回值。

func init() {
    // do something
}

执行顺序

包的初始化函数按照程序中引入的顺序执行,依赖于具体的顺序优先级,每次初始化一个包。例如 包 a 引入了 包 b, 那么确保 包 b 的初始化操作 在 包 a 的初始化操作之前完成。初始化过程是自下而上的,main 包 最后初始化,也就是说,在 main 函数 执行前, 所引用到的包已经全部初始化完成。

import -> const -> var -> init() -> main()

例子

包变量初始化

package main

import "fmt"

var (
    pageIndex int
    pageSize  int
)

func init() {
    pageIndex = 1
    pageSize = 20
}

func main() {
    fmt.Printf("page index = %d\n", pageIndex)
    fmt.Printf("page size = %d\n", pageSize)
}

// $ go run main.go
// 输出如下 
/**
  page index = 1
  page size = 20
*/

多个包之间引用初始化顺序

// 定义包 A
package A

func init() {
    println("hello A")
}

// 定义包 B
package B

import “A” // 包 B 引用包 A

func init() {
println(“hello B”)
}

package main

import "B" // 包 main 引用包 B

func init() {
    println("hello main")
}

func main() {
    println("hello world")
}

// $ go run main.go
// 输出如下 
/**
  hello A
  hello B
  hello main
  hello world
*/
```


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP