init

本篇讲解 Go 特殊函数 init 的作用、执行时机、执行顺序与执行流程分解,并给出可运行示例。

字数 307 字

init(特殊函数)

它是做什么的

init() 是 Go 的特殊函数,主要用于程序启动前的初始化逻辑。
它会在 main() 执行前自动执行。

语法/规则

  1. init 不能被手动调用,会在程序启动阶段自动执行。
  2. init 不能有参数,也不能有返回值。
  3. 一个 Go 文件里可以定义多个 init 函数。
  4. 在同一个文件中,多个 init 按出现顺序执行(谁写在前面谁先执行)。
  5. init 通常用于初始化配置、连接、缓存等准备工作。

多个 init 执行顺序示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package main

import "fmt"

func init() {
	fmt.Println("init1")
}

func init() {
	fmt.Println("init2")
}

func init() {
	fmt.Println("init3")
}

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

输出结果:

1
2
3
4
init1
init2
init3
main

常见错误

  1. 在代码中直接调用 init(),会编译报错。
  2. init 添加参数或返回值,会编译报错。
  3. 误以为所有文件里的 init 都能严格按“视觉顺序”控制,跨文件时不应依赖这种顺序。
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
载入天数...载入时分秒...
发表了 0 篇文章 · 发表了 46 篇笔记 · 总计 2 万 5 千字(其中笔记 25104 字)