Go语言中init函数作用

Posted styshoo

tags:

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

init函数作用

  • 执行Go语言的sync.Once操作;
  • 有些不能使用初始化表达式的变量,可以在init函数中初始化;
  • 先于普通函数执行一些操作。

init函数特点

  • init函数是先于main函数执行;
package main

import "fmt"

func init() 
   fmt.Println("init...")


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

输出:

init...
main...
  • init函数没有入参;
package main

func init(n int) 
	n += 3


func main() 
	

$ go run InitParameter.go
# command-line-arguments
.\\InitParameter.go:3:6: func init must have no arguments and no return values
  • init函数没有返回值;
package main

func init() 
	return 3


func main() 
	

输出

$ go run InitReturn.go
# command-line-arguments
.\\InitReturn.go:4:2: too many arguments to return
        have (number)
        want ()
  • init函数也不能被显示调用;
package main
import "fmt"

func init() 
	fmt.Println("nothing")


func main() 
	init()


输出

$ go run CallInit.go
# command-line-arguments
.\\CallInit.go:9:2: undefined: init
  • 不通报的init函数,按照引入的顺序来执行;
  • 每个包有可以有多个init函数,但不能保证他们之间的启动顺序;
  • 每个文件有可以有多个init函数,他们按照定义的先后顺序来执行;
package main 

import (
	"fmt"
)

func init() 
	fmt.Println("init3...")


func init() 
	fmt.Println("init1...")


func init() 
	fmt.Println("init2...")


func main() 
	

输出

$ go run InitSigleFile.go
init3...
init1...
init2...

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

go语言语法(基础语法篇)

Go语言中init()函数介绍及执行顺序

Go语言中init()函数介绍及执行顺序

Go语言特殊函数介绍

Go语言 init 函数

Go语言学习-main和init