从零开始学Go之容器(一):数组

数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成

 

声明:

var 数组名 [数组长度]类型

var a [10]int//第一个元素a[0],最后一个元素a[len(a)-1]

数组长度在声明后不能改变,因为长度是类型的一部分。

数组的下标是从0开始,到长度len-1为止,长度为3的数组下标对应0,1,2

 

初始化:

var 数组名 [数组长度]类型{初始化值列表}

var a [3]int{1,2,3}
var a [3]int{1,2}//a[2]=0
var a [100]int{99:-1}//索引初始化,a[99]=-1
var a [2]string{a:"a",b:"b"}//自己指定索引并初始化

数组未初始化的值为自动初始化为默认值(零值)

可以通过下标索引初始化,顺序无关,其余索引会自动初始化为默认值,在非数字类型的数组中,索引也可以自己指定。

 

不定长数组:

var 数组名 [...]类型

var a [...]int{1,2}//此时长度为2

不定长数组的长度会根据初始化值列表长度来计算

 

数组比较:

不同长度的数组之间不能比较,相同长度的数组之前只有所有元素的值和类型都相等才能相等

a [3]int{1,2}
b [2]int{1,2}
c [2]int{1,2}
fmt.Println(b==c)//结果为true
//a==c //编译错误

 

二维数组:

var 数组名 [数组长度]数组类型

var a [4][3]int//声明一个长度为3,高度为4的数组
var a [2][2]int{{1,2},{3,4}}//2x2数组初始化

 

数组遍历:

有两种方法,一种是下标遍历,另一种是range遍历

func main() {
 var team [3]string
 team[0] = "hammer"
 team[1] = "soldier"
 team[2] = "mum"//仿C的写法
 for i := 0; i < len(team); i++ {
  fmt.Println(team[i])
 }
​
 //go中的range方法
 for k, v := range team {
  fmt.Println(k, v)
 }
}

运行结果

0 hammer

1 soldier

2 mum

hammer

soldier

mum

posted @ 2019-06-24 19:28  VingB2by  阅读(173)  评论(0编辑  收藏  举报