go 数组

29 阅读1分钟
  1. 数组:是同一种数据类型的固定长度的序列。
  2. 数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分
  3. 长度是数组类型的一部分,因此,var a[5] intvar a[10]int是不同的类型
  4. 数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1
  for i := 0; i < len(a); i++ {
    }
    for index, v := range a {
    }
    5. 访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic
    6. 数组是值类型,赋值和传参会复制整个数组,而不是指针。因此改变副本的值,不会改变本身的值。
    7.支持 "==""!=" 操作符,因为内存总是被初始化过的。
    8.指针数组 [n]*T,数组指针 *[n]T。
    
    
var arr [5]int = [5]int{0, 1, 2, 3, 4}
var ptr *[5]int = &arr // ptr 是指向整个数组的指针
(*ptr)[0] = 10        // 解引用然后使用索引
ptr[0] = 10           // 直接使用索引,同样有效

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)
}