go语言中的init函数

init()函数在程序运行时自动被调用,不能在代码中主动调用它。

image

init()函数会自动调用

package main

import "fmt"

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

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

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

输出如下
init 1
init 2
main

init()函数的注意点

函数名必须是 init。
不能有参数,也不能有返回值。
不能被显式调用,例如 init() 会编译错误。
不能被赋值给变量,也不能作为参数传递。
可以定义在任意包中,包括 main 包。
同一个包、同一个文件里可以定义多个 init。
一个包即使被多个包导入,也只会初始化一次。

在运行时,被最后导入的包会最先初始化并调用其init()函数,如下图示:

e7cafa1d-c87c-46c4-8ceb-953554fb446e

posted @ 2026-10-01 17:50  何人陪我共长生  阅读(12)  评论(0)    收藏  举报