热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Go语言中初始化函数的作用与应用

Go语言中的init函数,Go语言社区,Golang程序员人脉社

今天来了解一下Go语言中的init函数

Go语言中有两个保留的函数:main函数和init函数

init函数的特性如下:

init函数没有参数和返回值;
init函数不能被其他函数调用,只能被Go程序自动调用;
一个package中可以包含多个init函数;
一个go文件中可以包含多个init函数;
最好一个go文件中只写一个init函数;

init函数与main函数的区别:

init可以应用于任意包中,且可以重复定义多个;
main函数只能用于main包中,且只能定义一个。

init函数和main函数的执行顺序,导包的顺序,常量、变量的初始化顺序:

程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时将它们依次导入。有时一个包会被多个包同时导入,那么它只会被导入一次(例如很多包可能都会用到fmt包,但它只会被导入一次,因为没有必要导入多次)。当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行init函数(如果有的话),依此类推。等所有被导入的包都加载完毕了,就会开始对main包中的包级常量和变量进行初始化,然后执行main包中的init函数(如果存在的话),最后执行main函数。过程如下:在这里插入图片描述

init函数的常见作用:

初始化不能采用初始化表达式初始化的变量;
检查/修复程序的状态;
程序运行前的注册;
运行一次计算;
实现sync.Once功能。

参考文章:

go中的main函数和init函数
Golang init函数
Go init函数详解
五分钟理解golang的init函数
Go 中的 init 函数


推荐阅读
author-avatar
飞上天的鱼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有