Golang 数组

Posted zhichaoma

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang 数组相关的知识,希望对你有一定的参考价值。

1. 数组的定义和初始化

数组定义语法

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

定义和初始化数组

代码示例:

package main

import "fmt"

func main() {
    // 1. var 定义数组
    var arr1 [5]int
    fmt.Printf("arr1: %v
",arr1)

    // 2. := 自动推导,定义并初始化
    arr2 := [3]int{1,2,3}
    fmt.Printf("arr2: %v
",arr2)

    // 3. 省略大小
    arr3 := [...]int{2,4,6,8,10,12}
    fmt.Printf("arr3: %v
",arr3)

    // 4. 指定索引初始化
    arr4 := [5]int{1,2,3}
    arr5 := [5]int{3:1, 4:2}
    fmt.Printf("arr4: %v
",arr4)
    fmt.Printf("arr5: %v
",arr5)

    // 5. 赋值给别的数组
    arr6 := [5]int{2:1, 3:6}
    fmt.Printf("arr6: %v
",arr6)
    var arr7 [5]int
    // 两个数组的长度和类型必须相同,否则不认为是一个类型无法相互赋值
    arr7 = arr6
    fmt.Printf("arr7: %v
",arr7)
}

2. 数组遍历

package main

import "fmt"

func main() {
    // 创建数组
    array := [5]int{1, 3, 5, 7, 9}
    // 1. for
    for i:=0; i< len(array);i++ {
        fmt.Printf("index: %d, val: %d
", i, array[i])
    }
    fmt.Println()
    // 2. for range
    for index, value := range array {
        fmt.Printf("index: %d, val: %d
", index, value)
    }
}

3. 二维数组

package main

import "fmt"

func main() {
    // 创建3行两列数组
    var array [3][2]int
    // 数组赋值
    array[0][0] = 00
    array[0][1] = 01
    array[1][0] = 10
    array[1][1] = 11
    array[2][0] = 20
    array[2][1] = 21

    fmt.Println(array)

    // 遍历,两个循环遍历
    for i := 0; i < 3; i++ {
        for j := 0; j < 2; j++ {
            fmt.Printf("row: [%d][%d], val: %d
", i, j, array[i][j])
        }
    }

    fmt.Println("----------优美的分割线----------")
    for i, val := range array {
        for j, val2 := range val {
            fmt.Printf("row: [%d][%d], val: %d
", i, j, val2)
        }
    }

}

4. 数组拷贝和传参

package main

import "fmt"

func printArr(arr *[5]int) {
    arr[0] = 10
    for i, v := range arr {
        fmt.Println(i, v)
    }
}

func main() {
    // 指针传递数组并修改会改变原有数组的值
    var arr1 [5]int
    printArr(&arr1)
    fmt.Println(arr1)

    arr2 := [...]int{2, 4, 6, 8, 10}
    printArr(&arr2)
    fmt.Println(arr2)
}

以上是关于Golang 数组的主要内容,如果未能解决你的问题,请参考以下文章

golang代码片段(摘抄)

代码片段 - Golang 实现简单的 Web 服务器

代码片段 - Golang 实现集合操作

《Go题库·1》Golang里的数组和切片有了解过吗?

json [Golang] golang #golang #snippets中有用的片段

java golang oop 2文章片段