Skip to content

3.1、Golang 数组

数组:相同数据类型的一组数据的集合

  • 数组长度不能修改
  • 数组可以通过下标(索引)访问元素
  • 数组默认初始化为零值

定义

go
var variable_name [SIZE] variable_type

示例

go
package main

import "fmt"

func main() {
    var arr1 [2]string
    var arr2 [3]int

    fmt.Printf("arr1: %v\n", arr1) // arr1: [ ]
    fmt.Printf("arr1: %T\n", arr1) // arr1: [2]string

    fmt.Printf("arr2: %v\n", arr2) // arr2: [0 0 0]
    fmt.Printf("arr2: %T\n", arr2) // arr2: [3]int

}

初始化

示例

go
package main

import "fmt"

func main() {
    var arr1 = [2]string{"Tom", "Jack"}
    var arr2 = [3]int{1, 2, 3}
    var arr3 = [2]bool{true, false}

    fmt.Printf("arr1: %v\n", arr1)
    // arr1: [Tom Jack]

    fmt.Printf("arr2: %v\n", arr2)
    // arr2: [1 2 3]

    fmt.Printf("arr3: %v\n", arr3)
    // arr3: [true false]
}

可以省略长度

go
var arr1 = [...]int{1, 2, 3}

// 等价于
// var arr1 = [3]int{1, 2, 3}

fmt.Printf("len: %v\n", len(arr1))
// len: 3

指定索引值

go
package main

import "fmt"

func main() {
    // 未指定的值初始化为零值
    var arr1 = [...]int{0: 1, 2: 3}

    fmt.Printf("arr1: %v\n", arr1)
    // arr1: [1 0 3]

}

访问数组元素

示例

go
package main

import "fmt"

func main() {

    var arr1 [3]int
    fmt.Printf("arr1: %v\n", arr1)
    // arr1: [0 0 0]

    // 赋值
    arr1[0] = 1
    arr1[2] = 2
    fmt.Printf("arr1: %v\n", arr1)
    // arr1: [1 0 2]

    // 取值
    fmt.Printf("arr1[0]: %v\n", arr1[0])
    // arr1[0]: 1

    // 获取数组长度
    fmt.Printf("len(arr1): %v\n", len(arr1))
    // len(arr1): 3

    // 数组长度越界
    fmt.Printf("arr1[0]: %v\n", arr1[3])
    // invalid argument: index 3 out of bounds [0:3]
}

遍历数组

方式一:for

go
package main

import "fmt"

func main() {

    var arr = [...]int{100, 200, 300}

    // 快捷键for + tab
    for i := 0; i < len(arr); i++ {
        fmt.Printf("arr[%v]=%v\n", i, arr[i])
    }

    // arr[0]=100
    // arr[1]=200
    // arr[2]=300
}

方式二:for...range

go
package main

import "fmt"

func main() {

    var arr = [...]int{100, 200, 300}

    // 快捷键forr + tab
    // 索引, 值
    for index, value := range arr {
        fmt.Printf("arr[%v]=%v\n", index, value)
    }

    // arr[0]=100
    // arr[1]=200
    // arr[2]=300
}