各位小伙伴,大家好,我是小栈君,接近年末了,我们将开启新的一年的奋斗和努力!在这里也是祝愿大家新的一年,心想事成,步步高升。今天小栈君将为大家分享一下关于Go语言中init函数。
在go语言编程过程当中,go语言保留了两个函数,一个是main函数,一个是init函数,这两个函数的使用场景是main函数只能运用到main包中,但是针对于init函数,它适用的范围所有的包中。
两个函数的在定义的时候都不能带有任何参数和返回值。当然在一个文件中可以任意写多个init函数,但是无论对于代码的可读性还是可维护行而言都是困难重重的。
所以小栈君在这里强烈建议大家在一个文件中只写一个init函数,当然Python中也存在同样的函数,不过详细的教程会在后续为大家奉上。
Go语言程序都会自动调用init函数和main函数,所以再后续的开发过程中,并不需要任何地方调用这两个函数,每个文件中的init方法都不是非必需的,但是针对于main文件中必需包含一个main函数。
在go语言的变成中每个文件中可以存在任意的init函数,这些函数都会在程序执行开始的时候被调用,所以在你定义init函数的时候,在代码编译的过程中,都会优先安排在main函数之前执行。
Init函数在用于设置包、初始化变零或是其他要在程序运行前优先完成的引导工作,比如我们在启动一个项目需要读取相关的配置文件的时候,这一步骤就需要比其他的文件启动优先执行,因为配置算是项目的基石。其重要性不言而喻了。
下面我们进行实战一下,关于go语言的init函数浅尝辄止。我们在student包中定义一个结构体,然后在init函数中初始化一个person,打印出来。然后定义一个GetPersonAge的方法,方便我们在其他包中进行调用。
然后在main方法中进行init方法的编写和方法的调用。
最后得到的结果
程序的初始化和执行都起始于main包,如果main包还导入了其他包,那么在编译的时候会将他们依次导入,最开始会先执行导入包中的init函数,最后会执行main函数中的init函数。关于init的函数就简单的介绍到这里,我是小栈君,我们下期再见,拜了个拜,如果你喜欢我的分享,麻烦为我点赞,转发、或则分享
package student
import "fmt"
type Person struct {
Name string
Age int
}
func init() {
student := Person{
Name: "IT小栈君",
Age: 18,
}
fmt.Println(student)
}
func GetPersonAge() int {
return 18
}
package main
import "fmt"
import "./student"
func init() {
fmt.Println("开始初始化init函数")
}
func init() {
fmt.Println("第二次初始化init函数")
}
func init() {
fmt.Println("没想到吧,还有一个init函数")
}
//IT干货栈 强力推荐关注
func main() {
stu := student.GetPersonAge()
fmt.Println(stu)
}
共同学习,写下你的评论
评论加载中...
作者其他优质文章