美文网首页互联网就业技术指南
Golang重要特征之init函数

Golang重要特征之init函数

作者: Chole121 | 来源:发表于2018-12-10 17:03 被阅读27次

go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性

inti函数主要特征:

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

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

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

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

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

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

下面的两个go文件演示了:

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

gprog.go代码

package main

import (
    "fmt"
)

// the other init function in this go source file
func init() {
    fmt.Println("do in init")
}

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

func testf() {
    fmt.Println("do in testf")
    //if uncomment the next statment, then go build give error message : .\gprog.go:19: undefined: init
    //init()
}

ginit1.go代码,注意这个源文件中有两个init函数

package main

import (
    "fmt"
)

// the first init function in this go source file
func init() {
    fmt.Println("do in init1")
}

// the second init function in this go source file
func init() {
    fmt.Println("do in init2")
}

编译上面两个文件:go build gprog.go ginit1.go

编译之后执行gprog.exe后的结果表明,gprog.go中的init函数先执行,然后执行了ginit1.go中的两个init函数,然后才执行main函数。

执行结果:

do in init
do in init1
do in init2
do in main

感谢作者:stevenlife
查看原文:golang init函数

添加小编微信:grey0805,加入知识学习小分队~!

相关文章

网友评论

    本文标题:Golang重要特征之init函数

    本文链接:https://www.haomeiwen.com/subject/zmldhqtx.html