Go入门(五)-函数
来源:互联网 发布:python sorted函数 编辑:程序博客网 时间:2024/04/28 02:52
7 函数
7.1 Go的函数,通过关键字来 func 声明,可以有一个或者多个参数,每个参数后面带有类型,通过","分隔,可以返回多个值,使用关键字 return 返回值,格式如下;
func funcName(input1 type1, input2 type2) (output1 type1, output2 type2) {
//这里是处理逻辑代码
//返回多个值
return value1, value2
}
7.2 对于input,如果类型相同,只需声明一个类型,同理对于返回值,如果类型相同,只需返回一个类型;
7.3 返回值可以省略变量名,只写类型;
7.4 命名返回值的好处是文档可读性更好,见名知义,并且在return时 不必指定返回变量;
7.5 支持变参输入,输入的参数个数不确定,入参是一个slice类型,变参必须放在最后;
7.6 值传递和指针传递
Go使用的是值传递,当我们传递一个参数value到被调用的函数中时,其实只是这个值的一份copy,指针传递也是值传递,当然这个时候传递的值是地址,程序要通过改变的是这个地址指向的值,就能改变value;
7.7 大多数情况,我们并不需要保留一份copy,而是希望函数对入参有所作为,改变入参,所以传递指针比较合适,而且指针传递的开销比较小,只有8bytes;
7.8 defer是一个延时语句,类似java的try-catch-finally的finally,会在函数退出前调用 defer 后指定的动作,函数体内支持多个defer,执行顺序为后进先出,最后面定义的会最先执行;
输出结果为:321
7.9 函数也是一种变量,可以作为值,类型来传递,使用关键字type,格式如下:
type typeName func(input1 inputType1 , input2 inputType2 [, ...]) (result1 resultType1 [, ...])
函数类型和实现了该类型的函数,类似java的接口类和实现类的关系,具体的应用也类似,看完实例你就明白了:
输出结果如下:
false
false
value :19 is greater than 10
true
value :8 is less than 10
true
value :9 is less than 10
true
false
7.10 main函数和init函数
这两个函数名是Go保留的函数,init函数可以在所有的pakage中定义,而main只能在mainpackage中定义,具体的调用顺序如下:
Have fun!
阅读全文
0 0
- Go入门(五)-函数
- Effictive Go(五)函数
- Go?GO!(五) Effective Go
- go语言入门(流程控制,函数,错误处理)
- Go语言学习笔记(五) [函数]
- Shell入门(五)Shell函数
- Go语言基础入门--函数,错误处理
- Let's go,Garbage Collector(五)
- Go语言圣经(中文版)读书笔记(五)
- Go语言编程(五)之常量
- Go学习笔记五(接口)
- Go语言学习笔记(五)方法
- Java 8 Lambda函数编程入门(五)
- GO入门
- go 入门
- Go入门(二)-Go基础(一)
- Go入门(三)-Go基础(二)
- go语言快速入门:内建函数(6)
- groovy中each迭代get方法获取值未空,原因探究。GStringImpl
- 通过ThreadPoolExecutor 进行多线程编程
- JAVA互联网架构学习之Mybatis
- 如何统计iOS产品不同渠道的下载量?
- 我的第一个 java 小程序 Hello World!
- Go入门(五)-函数
- 使用注解处理器跳过微信包名限制(三)
- intellij IDEA 中,.properties文件unicode转中文
- 数据卷容器
- LightOJ
- iOS中的蓝牙开发
- git大小写敏感, macOS大小写不敏感导致的问题
- list集合去除重复对象
- Smart3D之手动配置 S3C 索引加载全部的OSGB瓦片数据