• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go入门(五)-函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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人参与评论

请发表评论

全部评论

专题导读
上一篇:
VSCode配置Go语言开发环境发布时间:2022-07-10
下一篇:
Go标准库Cond发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap