1. 什么是 Go 语言的 init 函数

Go 语言中的 init 函数是一种特殊的函数,它会在程序执行之前自动被调用。每个包(package)都可以有一个或多个 init 函数,它们会按照文件顺序被调用。init 函数没有参数和返回值。

2. init 函数的执行时机

init 函数的执行时机与包的导入顺序有关。在 Go 语言中,首先导入包的依赖,然后按照源代码中的顺序导入自身的包。最后,按照依赖关系的顺序依次执行各个包中的 init 函数。这种机制保证了 init 函数的执行顺序。

3. init 函数的特点

下面是 init 函数的一些特点:

  • init 函数在包被导入时自动执行,程序员无法手动调用它。
  • 同一个包中可以包含多个 init 函数,它们按照文件顺序被执行。
  • 不同包的 init 函数按照包的导入顺序依次执行。
  • init 函数可以用于做一些初始化操作,例如初始化变量、注册驱动程序等。
  • init 函数没有参数和返回值。

4. init 函数的示例


package main

import (
    "fmt"
)

var globalVariable string

func init() {
    globalVariable = "Hello, World!"
    fmt.Println("init function is called.")
}

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

上述示例代码中,init 函数用于初始化全局变量 globalVariable,并在控制台打印一条消息。init 函数会在程序执行之前自动被调用,因此在 main 函数中可以直接使用 globalVariable。执行上述代码,会先打印 "init function is called.",然后再输出 "Hello, World!"。