前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言学习示例04-函数及函数特性

Go语言学习示例04-函数及函数特性

作者头像
用户5252199
发布2022-04-18 18:41:28
1740
发布2022-04-18 18:41:28
举报
文章被收录于专栏:大数据技术博文

在Go语言中,函数是go代码中的一个代码块

在go语言中,声明函数

代码语言:javascript
复制
fun sum(i int,j int) int{return i+j }

在go语言函数中,返回值需要通过return方式来返回。

调用直接通过函数名的方式调用即可

在函数中,还有很多其它的特性:

1 . 多返回值

在go语言中,支持多返回值,而且使用的频次还比较高一些,用的比较多的就是用于返回值和异常信息了!

代码语言:javascript
复制
j,p := sum(1,2)
fmt.Println(j,p)
func sum(i int, j int) (int,int) {
return i + j,0
}

2. 允许可变长参数

函数中允许传递可变长度的参数,比如:

代码语言:javascript
复制
func sums(i ...int) int {
   total := 0
for _, r := range i {
      total += r
   }
return total
}

可变参数长度本质上来讲就是slice,变参在函数中只能有一个,且只能是在最后一个!

如果使用slice结构转为可变长的参数时,可以使用如下的方式:

代码语言:javascript
复制
r := []int{1,2,3,4}
sums(r...)

3. 闭包

go语言中支持通过闭包来创建匿名函数,匿名函数在定义一个不需要命名的内敛函数时是很实用的。

这个 intSeq 函数返回另一个在 intSeq 函数体内定义的匿名函数。这个返回的函数使用闭包的方式 隐藏 变量 i

代码语言:javascript
复制
func initSeq() func() int {
   i := 0
return func() int {
       i += 1
return i
   }
}

调用 intSeq 函数,将返回值(也是一个函数)赋给nextInt。这个函数的值包含了自己的值 i,这样在每次调用 nextInt 时都会更新 i 的值

代码语言:javascript
复制
initSeqs := initSeq()
fmt.Println(initSeqs())
fmt.Println(initSeqs())
fmt.Println(initSeqs())
fmt.Println(initSeqs())

学习地址:

https://books.studygolang.com

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术博文 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档