嗨,各位码农朋友们!今天咱们要来聊一聊Go语言里那个看似简单却暗藏玄机的小可爱——数组。别以为它只是个平平无奇的数据容器,实际上啊,它可是个有“强迫症”的内存管理员!
想象一下,数组就像一个严格遵守纪律的军队方阵,每个士兵(元素)都笔直地站在自己固定的位置上,等着你随时检阅。但你要是想跟这些士兵互动,得先知道他们的“点名规则”才行。这不,今天我就带大家来一场说走就走的“数组点名”之旅!
第一章:初识数组——Go世界的“集体宿舍”
在开始点名之前,咱们先得搞清楚这个“集体宿舍”是怎么建的。Go语言里的数组是个相当固执的家伙,一旦你定义了它的规模,它就再也不肯改变了。
// 来个简单的数组声明示范
var classroom [30]string // 一个能容纳30个学生名字的数组
var scores [5]int // 一个存储5个成绩的数组
// 直接初始化也是可以的
friends := [3]string{"小明", "小红", "小刚"}
看到没?数组在声明时就确定了大小,这点跟它的亲戚“切片”完全不同。数组就像个固定座位的教室,有多少座位是早就定好的,不能临时加座也不能撤座。
内存小贴士:数组在内存中是连续存储的,就像一排连号的酒店房间。每个元素都紧挨着前一个元素,这种结构让数组的访问速度特别快,因为CPU缓存特别喜欢这种连续的内存块!
第二章:数组点名术——索引访问的“正确姿势”
好了,现在咱们的“士兵方阵”已经排好了,接下来就是点名时间!数组访问的核心就是通过索引(下标)来读写元素。
2.1 基础点名法:读取元素
package main
import "fmt"
func main() {
// 创建一个游戏角色数组
characters := [4]string{"战士", "法师", "射手", "辅助"}
// 访问第一个元素(索引0)
fmt.Printf("第一个角色:%s\n", characters[0])
// 访问最后一个元素(索引3)
fmt.Printf("最后一个角色:%s\n", characters[3])
// 来个循环遍历所有角色
fmt.Println("=== 所有角色 ===")
for i := 0; i < len(characters); i++ {
fmt.Printf("位置%d:%s\n", i, characters[i])
}
}
运行结果:
第一个角色:战士
最后一个角色:辅助
=== 所有角色 ===
位置0:战士
位置1:法师
位置2:射手
位置3:辅助
重点来了:Go语言的数组索引是从0开始的!这是很多新手容易踩坑的地方。为什么从0开始?因为数组名实际上代表的是数组首元素的内存地址,索引表示的是偏移量。第一个元素的偏移量当然是0啦!

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



