为了账号安全,请及时绑定邮箱和手机立即绑定

Go语言init函数介绍

2020.01.13 15:14 632浏览

各位小伙伴,大家好,我是小栈君,接近年末了,我们将开启新的一年的奋斗和努力!在这里也是祝愿大家新的一年,心想事成,步步高升。今天小栈君将为大家分享一下关于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)
}
点击查看更多内容
Go

本文首次发布于慕课网 ,转载请注明出处,谢谢合作

1人点赞

若觉得本文不错,就分享一下吧!

评论

相关文章推荐

正在加载中
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消