Golang的init函数

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang的init函数相关的知识,希望对你有一定的参考价值。

Golang的init函数

1.定义

每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用,也就是说init会 在main函数前被调用。

2.基本使用

//init函数
package main
 
import (
	"fmt" 
)
//定义一个init函数
func init()
   fmt.Println("init执行")

 
func main() 
  fmt.Println("main执行")

结果

3.先后顺序

如果一个文件同时包含全局变量定义,init函数和main函数,则执行的流程是全局变量定义>init函数>main函数。

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

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

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

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

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

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

同时外部的包的init 优先于 main 的init。

//init函数
package main
 
import (
	"fmt" 
)
//定义一个全局变量
var a1 = test()
func test() int
  fmt.Println("test执行")
  return 10

//定义一个init函数
func init()
   fmt.Println("init执行")

 
func main() 
  fmt.Println("main执行")
  fmt.Println(a1)

4.作用

init函数最主要的作用,就是完成一些初始化的工作

utils.go

package utils
 
var Age int 
var Name string
//使用init函数进行初始化
func init() 
	Age = 10
	Name = "小明"

main.go

//init函数
package main
 
import (
	"fmt"
  "go_code/project01/main/demo08/utils" 
)
 
func main() 
 fmt.Println(utils.Age,utils.Name)

参考文章

传送门1

传送门2

传送门3

以上是关于Golang的init函数的主要内容,如果未能解决你的问题,请参考以下文章

golang中的init函数以及main函数

Golang中的init函数

Golang:init函数与匿名函数介绍

Golang:init函数与匿名函数介绍

Golang:init函数与匿名函数介绍

一文读懂 Golang init 函数执行顺序