Golang 数组

109 阅读2分钟

0. 前言

在Golang中数组是值类型,数组从声明就确定,使用时可以修改数组成员,但是数组大小不可变换。

1. 数组

  • 数组的定义
    • var 数组名「数组大小]数据类型
    • var a [5]int
    • 赋初值a[0]=1a[1]=30
  • 数组在内存布局(重要)
    • 定义数组,数组中的各个元素的默认值为0

        func main()
            var intArr [3]int
            fmt.Println(intArr)
        }
      
    • 内存

image.png

  • 数组的地址可以通过数组名来获取 &intArr
  • 数组的第一个元素的地址,就是数组的首地址
  • 数组的各个元素的地址间隔是依据数组的类型决定,比如int64->8int32->4.

2. 使用

  • 访问数组

    • 数组名[下标] 比如:你要使用a数组的第三个元素a[2]
  • 案例:保存3名同学的成绩并输出

var score [3]float64

for i :0;i<len(score);i++{
    fmt.Printf("请输入第%d个元素的值\n",i+1)
    fmt.scanln(&score[i])
}

//变量数组打印
for i:=0;i<len(score);i++{
    fmt.Printf("score[%d]=%v\n",i,score[i])
}
  • Golang数组的初始化方式特别多,下面就列举几种
var numArr01 [3]int [3]int{1,2,3}
fmt.Println("numArr01=",numArr01)

var numArr02 [3]int{5,6,7}
fmt.Println("numArr02=",numArr02)

// 这里的[...]是规定的写法
var numArr03 [...]int{8,9,10}
fmt.Println("numArr03=",numArr03)
var numArr04 [...]int{1:800,0:900,2:999}
fmt.Println("numArr04=",numArr04)

// 类型推导
strArr05 :=[...]string{1:"tom",0:"jack",2:"mary"}
fmt.Println("strArr05=",strArr05)

3. 遍历

  • for-range的基本语法

    for index,value :range arrayo1{
    }
    
    • 第一个返回值index是数组的下标
    • 第二个value是在该下标位置的值
    • 他们都是仅在for循环内部可见的局部变量
    • 数组元素的时候,如果不想使用下标index,可以直接把下标index标为下划线
    • index和yaue的名称不是固定的,即程序员可以自行指定,一般命名为index和value
  • 案例

package main
import (
    fmt
)

func main(){
    heroes:=[..]string{"张三""李四”,"王五"}

    for i,v:=range heroes{
        fmt.Printf("i=%vv=%v\n",i,v)
        fmt.Printf("heroes[%d]=%v\n",i,heroes[i])
    }
   
    for_,v:=range heroes{
        fmt.Printf("元素的值=%v小n”,v)
    }
    
}

4. 使用注意事项

  • 数组是多个相同类型数据的组合,一个数组一旦声明/定义了,其长度是固定的,不能动态变化
  • var arr []int这时ar就是一个slice切片,切片后面专门讲解,不急哈,
  • 数组中的元素可以是任何数据类型,包括值类型和引用类型,但是不能混用。
  • 数组创建后,如果没有赋值,有默认值(零值)
  • 使用数组的步骤1.声明数组并开辟空间2给数组各个元素赋值(默认零值)3使用数组
  • 数组的下标是从0开始的

本文正在参加技术专题18期-聊聊Go语言框架