前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Golang】三个...的用法

【Golang】三个...的用法

作者头像
DDGarfield
发布2022-06-23 19:16:02
3090
发布2022-06-23 19:16:02
举报
文章被收录于专栏:加菲的博客加菲的博客

es6中有扩展运算符,形如...,三个点, 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中。 在Golang中也是有...,但是好像却没有名字,可能是博主孤陋寡闻吧。下面就汇总一下...Golang中的用法。

1.在数组中

最原始,最简单声明或初始化,就是直接指明数组长度:

代码语言:javascript
复制
var intArray [10]int
var strArray [5]string{"成都","高新区"}
fmt.Println(intArray)
fmt.Println(strArray)

上面的方法虽然简单,但是每次都要确保提供的初始值与数组长度一致,开发者不提供初始值,编译器也会使用类型的零值帮助补全,上面的输出如下:

代码语言:javascript
复制
[0 0 0 0 0 0 0 0 0 0]
[成都 高新区   ]

我们可以使用...来声明,让编译器根据初始值的个数自行推断数组的长度

代码语言:javascript
复制
var intArray = [...]int{}
var intArray1 = [...]int{1}
var strArray = [...]string{"成都", "高新区"}
fmt.Println(intArray)
fmt.Println(intArray1)
fmt.Println(strArray)
代码语言:javascript
复制
[]
[1]
[成都 高新区]

2.在函数中

2.1 可变参数定义

在 【Golang】快速复习指南QuickReview(四)——函数提到了可变参数…

代码语言:javascript
复制
func Sum(x ...int) int {
 //此时x是一个切片
 sum := 0
 for _, v := range x {
  sum = sum + v
 }
 return sum
}

需要注意的点:可变参数一定是函数最右侧的参数。

2.2 可变参数传值

调用具有可变参数的函数时,除了传不定数量的参数,还可以使用...用以解压切片传值:

代码语言:javascript
复制
func main(){
 var intA = []int{1, 2, 3}
 sum1 := Sum(1, 2, 3, 4, 5)
 sum2 := Sum(intA...)
 println(sum1)
 println(sum2)
}

func Sum(x ...int) int {
    //此时x是一个数组
    sum := 0
    for _, v := range x {
        sum = sum + v
    }
    return sum
}
代码语言:javascript
复制
15
6

类似的,还可以参考内置函数append()

代码语言:javascript
复制
func append(slice []Type, elems ...Type) []Type

当append一个切片时,用法与上面是一样的:

代码语言:javascript
复制
var intA = []int{1, 2, 3}
var intB = []int{5}
intA = append(intA, intB...)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲的博客 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.在数组中
  • 2.在函数中
    • 2.1 可变参数定义
      • 2.2 可变参数传值
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档