06-go数组

2020-04-29  本文已影响0人  一如既往wfqwfq

1、go数组(array)概念

数组是一种长度固定,数据类型相同的一种集合。

2、数组声明

var 数组变量名 [数组长度]数据类型

var s [5]string  // 声明一个长度为5,数据类型为string的数组s
var m [10]int  //声明一个长度为10,数据类型为int的数组m

3、数组初始化

指定数组长度,不指定数组初始化列表,由编译器根据数据类型设置默认值

var s [3]string    // ["" "" ""]
var m [3]int       //[0 0 0]
var n [3]float     //[0 0 0]
var f [3]false     //[false false false]

指定数组长度,并指定数组初始化列表

var m = [3]int{1, 2, 3}    // [1 2 3]

不指定数组长度,指定数组初始化列表,数组长度由编译器根据初始化列表长度推导

var m = [...]int{1, 2, 3, 4}    // 数组长度为4

根据指定索引值来初始化数组

func main() {
    a := [...]int{1: 1, 3: 5}
    fmt.Println(a)                  // [0 1 0 5]
    fmt.Printf("type of a:%T\n", a) //type of a:[4]int
}

4、数组是值类型

go语言中数组是值类型,在赋值或者传参的时候会复制整个数组,因此改变副本的值,不会改变自身的值。

func modifyArray(arr [3]int)  {
    arr[2] = 10
}

func main() {
    arr := [3]int{1, 2, 3}
    modifyArray(arr)
    fmt.Println(arr[2]) // 打印结果:3,说明数组是值类型。函数中改变的是副本的值,而不是本身的值。
}

5、数组遍历

数组遍历有两种方法,一种是索引遍历,一种是for range遍历

func main() {
    arr := [5]int{1, 2, 3, 4, 5}
    // 索引遍历
    for i := 0; i < len(arr); i++ {
        fmt.Println(arr[i])
    }
    // for range遍历
    for index, value := range arr{
        // index表示下标
        fmt.Println(index, ":", value)
    }
}
上一篇 下一篇

猜你喜欢

热点阅读