8. 数组

【数组的声明】

package main 

import (
    "fmt"
)

func main() {
    var a[3] int
    var b[3] string

    fmt.Println(a)
    fmt.Println(b)
}

【数组的使用】

package main 

import (
    "fmt"
)

func main() {
    var a[3] int
    var b[3] string

    a[0] = 1
    a[1] = 2
    a[2] = 3

    b[0] = "aaa"
    b[1] = "bbb"
    b[2] = "ccc"

    fmt.Println(a)
    fmt.Println(b)
}

很简单的使用方法,注意这里Go语言不支持数组自动扩展,所以数组定义多大,就能使用多大,比如这里: a[3] = 4这样就是错误的,会报错:  invalid array index 3 (out of bounds for 3-element array)

【初始化值】

a := [3]int{1, 2, 3}
b := [3]string{"aaa", "bbb", "ccc"}
c := [...]int{4, 5, 6, 7, 8, 9, 10}

最后一行可以不指定数组长度初始化,具体长度由初始化的值个数决定。

【遍历数组】

遍历数组常用的就是for循环了,但是Go语言提供了range来迭代数组:

package main 

import (
    "fmt"
)

func main() {
    str := [...]string{"a", "b", "c", "d"}

    for i := 0; i < len(str); i++ {
        fmt.Printf("%d: %s\n", i, str[i])
    }

    for key, value := range str {
        fmt.Printf("%d: %s\n", key, value)
    }

    fmt.Println(str)
}

len 可以计算数组长度

【数组切片】

切片是数组的一些功能封装,但是切片并不产生新的数据,切片相当于对现有数据的引用。

package main 

import (
    "fmt"
)

func main() {
    
    a := [...]int{1, 2, 3, 4, 5, 6}
    b := a[1:4]

    b[0] = 999

    fmt.Println(a)
    fmt.Println(b)
}

以上面这个例子为例,结果是:

[1 999 3 4 5 6]
[999 3 4]

切片就很像是指针,他的所有操作,源数据都会被改变。

猜你喜欢

转载自www.cnblogs.com/hatsusakana/p/9816322.html