美文网首页
golang的main及init函数

golang的main及init函数

作者: 古则 | 来源:发表于2018-04-17 20:15 被阅读94次

转自:https://blog.csdn.net/rznice/article/details/18987047
Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个package中每个文件只写一个init函数。

Go程序会自动调用init()和main(),所以你不需要在任何地方调用这两个函数。每个package中的init函数都是可选的,但package main就必须包含一个main函数。

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

image.png

相关文章

  • golang的main及init函数

    转自:https://blog.csdn.net/rznice/article/details/18987047G...

  • Golang的Init函数和Main函数

    Init函数和main函数 go语言中的init函数用于包package初始化。该函数时go语言的一个重要特性in...

  • Golang筑基 ——函数

    定义 golang函数的定义: 特点 在golang中至少有一个main函数每个包只能有一个main函数golan...

  • init()函数 先导入的包的init函数先执行 init()函数和main()函数 这两个函数都是go中的保留函...

  • go 零碎

    func init() { fmt.Println("main init")}init 函数会在最开始执行, 导入...

  • main函数和init函数

    main函数 Go语言程序的默认入口函数(主函数):func main()函数体用{}一对括号包裹。只能应用于pa...

  • golang init函数

    go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性, 有下面的特征: 下面的两...

  • 分析SystemServer

    1.分析主函数main() 通过上述代码可知,SystemServer中的函数main()通过函数init1(),...

  • Golang的init函数

    Golang的init函数 转载:https://zhuanlan.zhihu.com/p/34211611 大家...

  • APUE 进程环境

    本文使用golang的syscall,os,golang.org/x/sys/unix包 1.main函数 mai...

网友评论

      本文标题:golang的main及init函数

      本文链接:https://www.haomeiwen.com/subject/irwpkftx.html