2.1. 数组

数组是一段固定长度的连续内存区域。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。

在Go语言中,可以定义一维数组或者多维数组。

一维数组声明以及初始化常见方式如下:

var arrAge  = [5]int{18, 20, 15, 22, 16}
var arrName = [5]string{3: "Chris", 4: "Ron"} //指定索引位置初始化
// {"","","","Chris","Ron"}
var arrCount = [4]int{500, 2: 100} //指定索引位置初始化 {500,0,100,0}
var arrLazy = [...]int{5, 6, 7, 8, 22} //数组长度初始化时根据元素多少确定
var arrPack = [...]int{10, 5: 100} //指定索引位置初始化,数组长度与此有关 {10,0,0,0,0,100}
var arrRoom [20]int
var arrBed = new([20]int)

2.1.1. 声明数组

数组的写法如下:

var 数组变量名 [元素数量]T

其中

  • 数组变量名:数组声明及使用时的变量名。

  • 元素数量:数组的元素数量。可以是一个表达式,但最终通过编译期计算的结果必须是整型数值。也就是说,元素数量不能含有到运行时才能确认大小的数值。

  • T可以是任意基本类型,包括T为数组本身。但类型为数组本身时,可以实现多维数组。

声明数组的例子

package main

import "fmt"

func main() {
    var team [3]string
    team[0] = "hujianli1"
    team[1] = "hujianli2"
    team[2] = "hujianli3"
    fmt.Println(team)
}

//[hujianli1 hujianli2 hujianli3]

2.1.2. 初始化数组,可以在声明时直接进行初始化

var name_list  = [3]string{"xiaojian01","xiaojian02","xiaojian03"}
fmt.Printf("%s--%s--%s",name_list[0],name_list[1],name_list[2])
//xiaojian01--xiaojian02--xiaojian03

// "..."表示让编译器确定数组大小
 var array_list = [...]string{"var1","var2","var3","var4"}
 fmt.Println(array_list[0]) //var1
 fmt.Println(array_list[1]) //var2
 fmt.Println(array_list[2])
 fmt.Println(array_list[3])

2.1.3. 使用for循环遍历数组,两种方式

访问每一个数组元素

package main

import "fmt"

var arrAge = [5]int{12, 13, 14, 15, 16}
var arrLazy = [...]int{22, 23, 24, 25, 26}
var arrKeyValue = [5]string{3: "hujian", 4: "xiaojian"}

func main() {
    // 遍历方法1
    for _, i2 := range arrAge {
        fmt.Println(i2)
    }
    fmt.Println("----------------------------")


    // 遍历方法2
    for i := 0; i < len(arrAge); i++ {
        fmt.Println(arrAge[i])
    }
}