go语言init和main函数

Mervyn1205 · · 16986 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go里面有两个保留的函数:init函数和main函数。下边就来比较一下两个函数的异同。
相同点:两个函数在定义时不能有任何的参数和返回值,且Go程序自动调用。
不同点:init可以应用于任意包中,且可以重复定义多个。main函数只能用于main包中,且只能定义一个。

下边说一下两个函数的执行顺序:
对同一个go文件的init()调用顺序是从上到下的
对同一个package中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的init()函数,对于
对不同的package,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init()
如果package存在依赖,则先调用最早被依赖的package中的init()
最后调用main函数

 

下图截自astaxie的《Go Web 编程》
golang  main函数引入包初始化流程图
ps:如果init函数中使用了println或者print 你会发现在执行过程中这两个不会按照你想象中的顺序执行。这两个函数官方只推荐在测试环境中使用,对于正式环境不要使用。


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:Mervyn1205

查看原文:go语言init和main函数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

16986 次点击  
加入收藏 微博
2 回复  |  直到 2018-06-25 09:07:56
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传