Go入门(五)-函数

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值