0. 前言
在Golang中数组是值类型,数组从声明就确定,使用时可以修改数组成员,但是数组大小不可变换。
1. 数组
- 数组的定义
- var 数组名「数组大小]数据类型
- var a [5]int
- 赋初值a[0]=1a[1]=30
- 数组在内存布局(重要)
-
定义数组,数组中的各个元素的默认值为0
func main() var intArr [3]int fmt.Println(intArr) } -
内存
-
- 数组的地址可以通过数组名来获取 &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语言框架