Go 快速入门指南 - init 函数
2022/12/28 4:24:02
本文主要是介绍Go 快速入门指南 - init 函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概述
init() 函数
是一个特殊的函数,一般称为初始化函数,不能被调用。 在每个文件里面,当程序启动或者文件被作为包引用的时候, init() 函数就会自动执行,一般用来做一些包的初始化操作。
语法规则
init() 函数
没有参数,也没有返回值。
func init() { // do something }
执行顺序
包的初始化函数按照程序中引入的顺序执行,依赖于具体的顺序优先级,每次初始化一个包。例如 包 a
引入了 包 b
, 那么确保 包 b
的初始化操作 在 包 a
的初始化操作之前完成。初始化过程是自下而上的,main 包
最后初始化,也就是说,在 main 函数
执行前, 所引用到的包已经全部初始化完成。
import -> const -> var -> init() -> main()
例子
包变量初始化
package main import "fmt" var ( pageIndex int pageSize int ) func init() { pageIndex = 1 pageSize = 20 } func main() { fmt.Printf("page index = %d\n", pageIndex) fmt.Printf("page size = %d\n", pageSize) } // $ go run main.go // 输出如下 /** page index = 1 page size = 20 */
多个包之间引用初始化顺序
// 定义包 A package A func init() { println("hello A") }
// 定义包 B
package B
import “A” // 包 B 引用包 A
func init() {
println(“hello B”)
}
package main import "B" // 包 main 引用包 B func init() { println("hello main") } func main() { println("hello world") } // $ go run main.go // 输出如下 /** hello A hello B hello main hello world */ ```
这篇关于Go 快速入门指南 - init 函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南