go语言的init函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wyy626562203/article/details/83656020

go语言的init函数

go语言中init函数用于包(package)的初始化。

有下面的特征:

  • init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等

  • 每个包可以拥有多个init函数

  • 包的每个源文件也可以拥有多个init函数

  • 同一个包中多个init函数的执行顺序go语言没有明确的定义(说明)

  • 不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序

  • init函数不能被其他函数调用,而是在main函数执行之前,自动被调用

应用实例

一个package或者是go文件可以包含多个init函数,init函数是在main函数之前执行的,init函数被自动调用,不能在其他函数中调用,显式调用会报该函数未定义

test1.go

package main

import (
    "fmt"
)

func init() {
    fmt.Println("this is a init function !")
}

func main() {
    fmt.Println("this is a main function !")
}

test2.go

package main

import (
    "fmt"
)

func init() {
    fmt.Println("this is a first init function !")
}

func init() {
	fmt.Println("this is a second init function !")
}

编译运行

go build test1.go test2.go

执行结果:

this is a init function !
this is a first init function !
this is a second init function !
this is a main function !

test1.go中的init函数先执行,接着执行了test2.go中的两个init函数,最后才执行main函数。

猜你喜欢

转载自blog.csdn.net/wyy626562203/article/details/83656020