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

前端之家收集整理的这篇文章主要介绍了[Golang]也许有你不知道的,Array和Slice(1)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Golang中的array

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

1)基础

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

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

2)数组的复制

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

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

猜你在找的Go相关文章