加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[Golang]也许有你不知道的,Array和Slice(1)

发布时间:2020-12-16 18:45:23 所属栏目:大数据 来源:网络整理
导读:Golang中的array 在golang中,array是同一类型的元素的有序排列,长度不能更改,占用内存上的一段连续空间。 1)基础 首先看看array的声明: [plain] view plain copy print ? varjusticeArray[3]string var justiceArray [3]string 以上声明了justiceArray

Golang中的array

在golang中,array是同一类型的元素的有序排列,长度不能更改,占用内存上的一段连续空间。

1)基础

首先看看array的声明:
[plain] view plain copy print ?
  1. varjusticeArray[3]string
以上声明了justiceArray是为有3个元素的string数组,括号里面的数字是必须的,不能省略。
另外说明一下,[3]string与[2]string是两种不同类型的array。
现在对其赋值:
[plain] view plain copy print ?
  1. justiceArray=[3]string{"Superman","Batman","WonderWoman"}
  2. fmt.Printf("TheJusticeLeagueare:%vn",justiceArray)
  3. 输出:
  4. TheJusticeLeagueare:[SupermanBatmanWonderWoman]
如果你只想创建一个填充默认值的数组,可以这样:
[plain] view plain copy print ?
  1. justiceArray=[3]string{}
  2. fmt.Printf("TheJusticeLeagueare:%vn",justiceArray)
  3. 输出:
  4. TheJusticeLeagueare:[]
当前数组拥有3个空的字符串。
另外你可以用一种省略形式:
[plain] view plain copy print ?
  1. justiceArray=[...]string{"Superman",justiceArray)
  2. 输出:
  3. TheJusticeLeagueare:[SupermanBatmanWonderWoman]
用...代替数字,当然大括号里的元素需要跟你声明的数组长度一致。
目的相同,下面这种声明赋值就更简洁了:

[plain] view plain copy print ?
  1. avengersArray:=[...]string{"CaptainAmerica","Hulk"}
  2. fmt.Printf("TheAvengersare:%vn",avengersArray)
  3. 输出:
  4. TheAvengersare:[CaptainAmericaHulk]
等号右边的返回类型是[2]string。

2)数组的复制

需要强调一点的是,array类型的变量指代整个数组变量(不同于c中的array,后者是一个指针,指向数组的第一元素);
类似与int这些基本类型,当将array类型的变量赋值时,是复制整个数组,参照下面这个例子:

[plain] view plain copy print ?
  1. newAvengers:=avengersArray
  2. newAvengers[0]="Spider-Man"
  3. fmt.Printf("Theoldavengers:%vn",avengersArray)
  4. fmt.Printf("Thenewavengers:%vn",newAvengers)
  5. 输出:
  6. Theoldavengers:[CaptainAmericaHulk]
  7. Thenewavengers:[Spider-ManHulk]
上面将avengersArray赋值给newAvengers时,是复制了整个数组,而不是单纯的指向。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读