标签:初始化 ini func 目录 执行 程序 main ack 定义
init函数会在main函数执行之前进行执行、init用在设置包、初始化变量或者其他要在程序运行前优先完成的引导工作。如果一个包被多个地方引用,那么只有在这个包第一次被引用时,才会执行这个包里边的init函数,其他地方对包的再次引用,这个包里边的init函数不会被执行。
init 函数在包级别被定义,主要用于:
main.go中的内容是:
package main
import (
"pk1"
"pk2"
)
func main() {
pk1.Pk1Demo()
pk2.Pk2Demo()
}
pk1目录中的de1.go
package pk1
import (
"fmt"
)
func Pk1Demo() {
fmt.Println("pk1 demo")
}
func init() {
fmt.Println("init. package is pk1")
}
pk2目录中的de2.go
package pk2
import (
"fmt"
"pk1"
)
func Pk2Demo() {
fmt.Println("pk2 demo")
pk1.Pk1Demo()
}
func init() {
fmt.Println("init. package is pk2")
}
执行main函数,输出信息是:
init. package is pk1
init. package is pk2
pk1 demo
pk2 demo
pk1 demo
pk1包被两个地方引用,第一次引用是在pk2包中,第二次引用是在main包中。虽然pk1包被引用多次,但从程序的输出信息可知,pk1包中的init函数只执行了一次。
标签:初始化 ini func 目录 执行 程序 main ack 定义
原文地址:https://blog.51cto.com/13764714/2375568