持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情
一、数组定义和内存布局:
一、数组的定义:
var 数组名 [数组大小] 数据类型var a [5] int- 赋初值
a[0]= 1 a[1] = 30 .....
二、数组内存图(重要):
package main
import "fmt"
func main() {
var intArr [3]int // int 占8分字节
// 当我们定义玩数组后,其实数组的各个元素都有默认值 0
intArr[0] = 10
intArr[1] = 10
intArr[2] = 10
fmt.Println(intArr)
fmt.Printf("intArr 的地址 = %p ,intArr [0]的地址 %p ,intArr [1]的地址 %p ,intArr [2]的地址 %p",
&intArr, &intArr[0], &intArr[1], &intArr[2])
}
对上图的总结:
- 数组的地址可以数组名来获取
&intArr - 数组的第一个元素的地址,就是数组的首地址。
- 数组的各个元素的地址间隔是依据数组的类型决定,比如
int64 ---> 8 、 int32 ---> 4
二、数组的使用:
一、访问数组元素:
数组名[下标],比如:你要使用a数组的第三个元素a[2]
二、快速入门案例
从终端循环输入5个成绩,保存到float 64数组,并输出。
package main
import "fmt"
func main() {
// 从终端循环输入5个成绩,保存到float64数组,并输出
var score [5]float64
for i := 0; i < len(score); i++ {
fmt.Printf("请输入第%d个元素的值", i+1)
fmt.Scanln(&score[i])
}
// 遍历数组打印
for i := 0; i < len(score); i++ {
fmt.Printf("score[%d]= %v ", i, score[i])
}
}
三、四种初始化数组的方式:
package main
import "fmt"
func main() {
// 四种初始化数组的方式
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)
// 类型推导
numArr05 := [...]string{1: "tom", 0: "jack", 2: "mary"}
fmt.Println("numArr05 = ", numArr05)
}
三、数组的遍历:
一、常规遍历
前面讲过了,不再赘述
二、for - range 结构遍历
这是Go 语言一种独有的结构,可以用来遍历访问数组的元素。
基本语法:
for index,value := range array01{
.........
}
说明:
- 第一个返回值
index是数组的下标。 - 第二个
value是该下标位置的值。 - 他们都是仅在
for循环内部可见的局部变量。 - 遍历数组元素的时候,如果不想使用下标
index,可以直接把下标index标为下刻线 _ index和value的名称不是固定的,即程序员可以自行指定,一般命名为index和value
package main
import "fmt"
func main() {
// 演示 for - range 遍历数组
var heroes [3]string = [3]string{"宋江", "吴用", "卢俊义"}
// heroes :=[.....]string{"宋江", "吴用", "卢俊义"}
// 使用常规的方式遍历,我不写了....
for i, v := range heroes {
fmt.Printf("i = %v v = %v\n", i, v)
fmt.Printf("heroes[%d]= %v\n", i, heroes[i])
}
fmt.Println("....................")
for _, v := range heroes {
fmt.Printf("元素的值 = %v\n", v)
}
}