init函数
每个golang源文件中都可以定义一个init函数。golang系统中,所有的源文件都有自己所属的目录,每一个目录都有对应的包名。在包的引用中,一旦某一个包被使用,则这个包下边的init函数将会被执行,且只执行一次。只执行一次的含义是什么呢?
如果一个包被多个地方引用,那么只有在这个包第一次被引用时,才会执行这个包里边的init函数,其他地方对包的再次引用,这个包里边的init函数不会被执行。
下边来定义一个工程,GOPATH所在目录结构信息是:
src
---pk1
------de1.go
---pk2
------de2.go
---main.go
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() {
f