go语言的-函数init

go语言的每个包中可以包含init函数,这些init函数都会在程序执行开始的时候被调用,所有被编译器发现的init函数都会在main()函数之前执行。(init函数,可以设置包、初始化变量或其他要在程序运行前优先完成的引导工作。)
mian.go

package main

import "fmt"

func init(){
	fmt.Println("init1 star...")
}
func init(){
	fmt.Println("init2 star...")
}
func main(){
	fmt.Println("main star")
	f1()
}

testinit.go

package main

import "fmt"

func init(){
	fmt.Println("init3 star...")
}
func f1(){
	fmt.Println("f1 star...")
}

testinit1.go

package main

import "fmt"

func init(){
	fmt.Println("init4 star...")
}
func f2(){
	fmt.Println("f1 star...")
}

运行结果:
在这里插入图片描述
从运行结果中可以看出,main执行之前,会执行项目文件夹下包含的所有.go文件中的init函数。
testinit.go中的init()函数,在main()函数执行f1()函数之前已经执行
testinit1.go中的init()函数,在main()函数在未执行f2()的情况下,同样执行

再加入一个gotest/testinit3.go测试

package gotest
import "fmt"

func init(){
	fmt.Println("init5 star...")
}
func F3(){
	fmt.Println("f3 star...")
}

当在mian()函数中不调用F3()函数时,并不执行testinit3.go中的init函数

package main

import (
	"ChanAndP/gotest"
	"fmt"
)

func init(){
	fmt.Println("init1 star...")
}
func init(){
	fmt.Println("init2 star...")
}
func main(){
	fmt.Println("main star")
	f1()
	gotest.F3()

}

当在mian()函数中调用F3()时(注意:F3的首字母必须大写,相当于公有,才能被调用),执行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值