init()、main() 是 go 语言中的保留函数。
我们可以在源码中,定义 init() 函数。此函数会在包被导入时执行

一个包被其它多个包 import,但只能被初始化一次

相同点:

  • 两个函数在定义时不能有任何的参数和返回值。
  • 该函数只能由 go 程序自动调用,不可以被引用。

不同点:

  • init 可以应用于任意包中,且可以重复定义多个。
  • main 函数只能用于 main 包中,且只能定义一个。

    (1) src/userPackage/tool.go

    1. package userPackage
    2. import "fmt"
    3. func init() {
    4. fmt.Println("tool init")
    5. }

    (2) src/main.go

    ```go package main import ( “userPackage” )

func main() { fmt.Println(“main run”)

userPackage.SomeFunc() } ```