1 概述 固定长度,数组声明后长度便不能再修改 只能存储一种特定类型元素的序列 2 语法编号 方式 代码示例 1 直接声明 var arr [3]int 2 make arr:=make([]int,3) 3 字面量 arr:=[3]int{1,2,3} 4 自动识别长度 arr:=[…]int{1,2,3} 5 new arrp := new([10]int) 6 下标取值 arr[0—size-1]
3 数组定义 var 数组变量名 [元素数量] T
比如:var a [5]int, 数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。 [5]int和[10]int是不同的类型。
var a [ 3 ] int
var b [ 4 ] int
a = b
复制
1 2 3
数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1,访问越界(下标在合法范围之外),则触发访问越界,会panic。
4 数组的初始化 4.1 初始化数组时可以使用初始化列表来设置数组元素的值。 func main ( ) {
var testArray [ 3 ] int
var numArray = [ 3 ] int { 1 , 2 }
var cityArray = [ 3 ] string { "北京" , "上海" , "深圳" }
fmt. Println ( testArray)
fmt. Println ( numArray)
fmt. Println ( cityArray)
}
复制
1 2 3 4 5 6 7 8
4.2 按照上面的方法每次都要确保提供的初始值和数组长度一致,一般情况下我们可以让编译器根据初始值的个数自行推断数组的长度,例如: func main ( ) {
var testArray [ 3 ] int
var numArray = [ ... ] int { 1 , 2 }
var cityArray = [ ... ] string { "北京" , "上海" , "深圳" }
fmt. Println ( testArray)
fmt. Println ( numArray)
fmt. Printf ( "type of numArray:%T\n" , numArray)
fmt. Println ( cityArray)
fmt. Printf ( "type of cityArray:%T\n" , cityArray)
}
复制
1 2 3 4 5 6 7 8 9 10
4.3 我们还可以使用指定索引值的方式来初始化数组,例如: func main ( ) {
a := [ ... ] int { 1 : 1 , 3 : 5 }
fmt. Println ( a)
fmt. Printf ( "type of a:%T\n" , a)
}
复制
1 2 3 4 5
5 数组的遍历 func main ( ) {
var a = [ ... ] string { "北京" , "上海" , "深圳" }
for i := 0 ; i < len ( a) ; i++ {
fmt. Println ( a[ i] )
}
for index, value := range a {
fmt. Println ( index, value)
}
}
复制
1 2 3 4 5 6 7 8 9 10 11 12
6 多维数组 Go语言是支持多维数组的,我们这里以二维数组为例(数组中又嵌套数组)。
二维数组的定义
func main ( ) {
a := [ 3 ] [ 2 ] string {
{ "北京" , "上海" } ,
{ "广州" , "深圳" } ,
{ "成都" , "重庆" } ,
}
fmt. Println ( a)
fmt. Println ( a[ 2 ] [ 1 ] )
}
复制
1 2 3 4 5 6 7 8 9
二维数组的遍历 func main ( ) {
a := [ 3 ] [ 2 ] string {
{ "北京" , "上海" } ,
{ "广州" , "深圳" } ,
{ "成都" , "重庆" } ,
}
for _ , v1 := range a {
for _ , v2 := range v1 {
fmt. Printf ( "%s\t" , v2)
}
fmt. Println ( )
}
}
复制
1 2 3 4 5 6 7