Go语言特殊函数介绍
main
函数
Go语言程序的默认入口函数(主函数):func main()
函数体用{}一对括号包裹。
只能应用于package main
func main(){
//函数体
}
init
函数
go语言中init
函数用于包package
的初始化,该函数是go语言的一个重要特性。
init函数有下面的特征:
1、init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等
2、每个包可以拥有多个init函数
3、包的每个源文件也可以拥有多个init函数
4、同一个包中多个init函数的执行顺序go语言没有明确的定义(说明)
5、不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序
6、init函数不能被其他函数调用,而是在main函数执行之前,自动被调用
init
函数和 main
函数的异同
相同点:
两个函数在定义时不能有任何的参数和返回值,且Go程序自动调用。
不同点:
init函数可以应用于任意包中,且可以重复定义多个。
main函数只能用于main包中,且只能定义一个。
两个函数的执行顺序
对同一个go文件的init()
调用顺序是从上到下的。
对同一个package
中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的init()
函数。
对于不同的package
,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init()
,如果package
存在依赖,则先调用最早被依赖的package
中的init()
,最后调用main函数。
如果init函数中使用了println()
或者print()
你会发现在执行过程中这两个不会按照你想象中的顺序执行。这两个函数官方只推荐在测试环境中使用,对于正式环境不要使用。
Go语言特殊函数介绍的更多相关文章
- Velocity语言的介绍
Velocity语言的介绍 2016-09-06 15:39:25 语言介绍 Velocity是一种Java模版引擎技术,是一个基于Java的模板引擎(template engine).她允许任何人简 ...
- 【个人笔记】002-PHP基础-01-PHP快速入门-02-PHP语言相关介绍输
002-PHP基础-01-PHP快速入门 02-PHP语言相关介绍 1.PHP是什么 Hypertext Preprocessor超文本预处理器 是一种通用开源脚本语言 Personal Home P ...
- Cocos2d-x 脚本语言Lua介绍
Cocos2d-x 脚本语言Lua介绍 本篇博客记录Lua学习.学习来自eoe论坛,Lua语言开发Cocos2d-x游戏入门视频教程,猛戳下面地址: http://www.eoeandroid.com ...
- 一、Go语言开篇介绍
Go语言开篇介绍 Go语言 是Google公司 在2007开发一种静态强类型.编译型语言,并在 2009 年正式对外发布. Go语言以其近C的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度 ...
- Lua语言的介绍和编程语言的归类
Lua 本条目介绍的是一种编程语言.关于关于Lua在维基百科中的使用,请见"维基百科:Lua".关于"Lua"一词的其他意思,请见"卢阿". ...
- go语言基本介绍
Golang发展历史 1. 诞生历史a. 诞生与2006年1月2号下午15点4分5秒b. 2009发布并正式开源c. 2012年第一个正式版本Go 1.0发布d. 截至到2017年8月24号Go 1. ...
- Scheme语言--简单介绍
一年前事实上有时间看完SICP这本书,后来由于种种原因,一直没有继续再学.由于SICP中使用Scheme确实应用不多.在Java,C++的语言眼里,Scheme确实非常另类.现在MIT已经放弃了使用S ...
- Java语言的介绍
1. 计算机语言 语言:沟通交流的方式 计算机语言:人与计算机之间的交流方式 java是一门计算机编程语言,也是意大利自行车品牌 软件工程师,java开发工程师 <--------------- ...
- REST建模语言RAML介绍
原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com RAML是什么? RAML是一种简洁的RESTful API描述性语言,它基于 YAML和JSON这样的公 ...
随机推荐
- nyoj746 整数划分
nyoj746 http://acm.nyist.net/JudgeOnline/problem.php?pid=746 一道区间dp的题目: 设:a[i][j]为那一串数字中从第i位到第j位的数是多 ...
- javascript总结31 :DOM概述
1 JavaScript 三个组成部分 核心(ECMAScript)欧洲计算机制造商协会 描述了JS的语法和基本对象. 文档对象模型(DOM) 处理网页内容的方法和接口 浏览器对象模型(BOM) 与浏 ...
- 编写高质量代码改善C#程序的157个建议——建议141:不知道该不该用大括号时,就用
建议141:不知道该不该用大括号时,就用 如果if条件语句只有一行语句,要不要使用大括号? 答案是:建议使用.一个括号不会增加多少代码,但是却让代码看上去增加了一致性.括号本身只会让代码更具条理性. ...
- Java菜鸟之java基础语法,运算符(三)
赋值运算符 (一)JAVA种的赋值运算符 = ,代表代表的等于,一般的形式是 左边变量名称 = 右边的需要赋的指或者表达式,如果左侧的变量类型级别比较高,就把右侧的数据转换成左侧相同的高 ...
- 再次理解js中的call函数
a.call(b); 网上说明的版本比较多.有的说,是指针替换.有说,将a对象的方法加在b对象执行.官方说:什么对象替换什么对象.反正看了几个版本,尽管有具体的实例,看了我三次都没看懂它的具体含义.看 ...
- OSI结构和TCP/IP模型
TCP/IP层次模型共分为五层:应用层HTTP.传输层TCP.网络层IP.数据链路层Data-link.物理层physical. 应用层—应用层是所有用户所面向的应用程序的统称.ICP/IP协议族在这 ...
- 了解entity framework其他query方式之Entity SQL,Raw Sql分析
一:linq 对ef来说不是唯一性的query... 二:Entity Sql 1. esql => entity sql... [类sql的语言] 和sql差不多,但是呢,不是sql... u ...
- [LeetCode 题解]: Container With Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). ...
- VMware+Linux更改磁盘配额(使用gparted LiveCd) 实用!!!
转载:http://blog.csdn.net/microad_liy/article/details/7667670 写这篇文章的原因: 最近要给服务器Centos上的ruby版本升级,由于是第一次 ...
- python语言的jenkinapi
# coding:utf-8 from jenkinsapi.jenkins import Jenkins # 实例化Jenkins对象,传入地址+账号+密码 j = Jenkins("ht ...