Go Array

2020-12-29  本文已影响0人  JunChow520

Go语言中数组是固定长度且特定类型的,与之对应的是切片(Slice),切片是可以增长或收缩的动态序列。

数组声明

var 数组变量名 [元素个数]Type

数组元素可通过索引下标来访问,索引下标从0开始递增到长度减一的位置,内置函数len()可获取数组元素个数。

package main

import "fmt"

//定义数组
var arr [10]int

func main() {
    //获取数组第一个元素
    fmt.Printf("array first item is %d\n", arr[0])
    //获取数组最后一个元素
    fmt.Printf("array last item is %d\n", arr[len(arr)-1])
    //数组遍历
    for k,v := range arr {
        fmt.Printf("k = %d, v = %d\n", k, v)
    }
    for _,v := range arr{
        fmt.Printf("item = %d\n", v)
    }
}

数组初始化

默认数组元素会被初始化为类型对应的默认值,可使用数组字面量来初始化数组。

package main

import "fmt"

func main() {
    arr := [3]int{1, 2}
    for _,v := range arr{
        fmt.Printf("item is %d\n", v)
    }
}

数组定义中若数组长度使用...则表示数组长度会根据初始值的个数进行计算

package main

import "fmt"

func main() {
    arr := [...]int{1, 2, 3}
    fmt.Printf("array type is %T\n", arr)//array type is [3]int
    fmt.Printf("array length is %d\n", len(arr))//array length is 3
}

数组长度是数组类型的组成部分,数组长度必须是常量表达式,因为数组长度必须在编译阶段确定。

package main

import "fmt"

func main() {
    arr := [...]int{1, 2}
    arr = [3]int{1, 2, 3}//cannot use [3]int literal (type [3]int) as type [2]int in assignment
    fmt.Printf("array length is %d", arr)
}

编译错误:无法将 [3]int 赋值给 [2]int

数组比较

只有当两个数组的长度和元素类型相同时才能使用==!=运算符来判断是否相等

package main

import "fmt"

func main() {
    arr1 := [...]int{1, 2}
    arr2 := [...]int{1, 2}
    fmt.Print(arr1 == arr2)//true

    arr3 := [...]int{1, 2, 3}
    fmt.Print(arr1 == arr3)//invalid operation: arr1 == arr3 (mismatched types [2]int and [3]int)
}

编译错误:非法操作

数组遍历

package main

import "fmt"

func main() {
    arr := [...]string{"username", "password"}
    for k,v := range arr{
        fmt.Printf("k = %d, v = %s\n", k, v)
    }
}

多维数组

创建4x2的二位数组

var arr [4][2]int

使用数组字面量初始化二维数组

arr = [4][2]int{{1, 2}, {10, 20}, {100, 200}, {1000, 2000}}

声明并初始化数组中索引为1和3的元素

package main

import "fmt"

var arr [4][2]int

func main() {
    arr = [4][2]int{1:{1, 2}, 3:{100, 200}}
    for k,v := range arr{
        fmt.Printf("k=%d, v=%v\n", k, v)
    }
}
k=0, v=[0 0]
k=1, v=[1 2]
k=2, v=[0 0]
k=3, v=[100 200]

访问多维数组中单个元素的值

arr = [4][2]int{1:{1, 2}, 3:{100, 200}}
fmt.Printf("%d\n", arr[1][0])//1
上一篇 下一篇

猜你喜欢

热点阅读