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函数作用的主要内容,如果未能解决你的问题,请参考以下文章