导读:本期聚焦于小伙伴创作的《如何在Golang中使用数组_声明、初始化和访问数组元素》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Golang中使用数组_声明、初始化和访问数组元素》有用,将其分享出去将是对创作者最好的鼓励。

Golang中的数组是固定长度的同类型元素集合,长度在声明时就确定,后续无法修改,这是它和切片最明显的区别。数组在内存中是连续存储的,访问效率很高,适合存储数量固定的同类型数据。

如何在Golang中使用数组_声明、初始化和访问数组元素

Golang数组的声明

数组的声明需要指定元素类型和数组长度,语法格式为 var 数组名 [长度]元素类型,声明后数组的每个元素会被初始化为对应类型的零值。

常见的声明方式有以下几种:

  • 声明指定长度的整型数组,元素默认值为0
  • 声明指定长度的字符串数组,元素默认值为空字符串
  • 声明指定长度的布尔数组,元素默认值为false

下面是具体的声明代码示例:

package main

import "fmt"

func main() {
    // 声明长度为5的整型数组,默认元素都是0
    var intArr [5]int
    // 声明长度为3的字符串数组,默认元素都是空字符串
    var strArr [3]string
    // 声明长度为2的布尔数组,默认元素都是false
    var boolArr [2]bool

    fmt.Println("整型数组默认值:", intArr)
    fmt.Println("字符串数组默认值:", strArr)
    fmt.Println("布尔数组默认值:", boolArr)
}

Golang数组的初始化

数组可以在声明的同时完成初始化,也可以先声明后赋值,初始化方式比较灵活,主要有以下几种:

1. 声明时直接赋值初始化

在声明数组时,直接在后面跟上初始化列表,给对应位置的元素赋值,未赋值的元素保持零值。

package main

import "fmt"

func main() {
    // 声明长度为4的整型数组,前两个元素赋值,后两个保持默认值0
    var arr1 [4]int = [4]int{1, 2}
    fmt.Println("arr1的值:", arr1) // 输出 [1 2 0 0]
}

2. 使用省略号自动推导长度初始化

如果初始化时已经给出了所有元素的值,可以使用省略号 ... 代替长度,编译器会自动根据初始化元素的个数推导数组长度。

package main

import "fmt"

func main() {
    // 使用省略号自动推导长度,数组长度为3
    arr2 := [...]int{10, 20, 30}
    fmt.Println("arr2的长度:", len(arr2)) // 输出 3
    fmt.Println("arr2的值:", arr2)        // 输出 [10 20 30]
}

3. 指定索引位置初始化

可以只给数组中指定索引的元素赋值,其他未指定的索引位置元素保持零值,索引从0开始。

package main

import "fmt"

func main() {
    // 只给索引0和索引2的位置赋值,索引1和3保持默认值0
    arr3 := [4]int{0: 5, 2: 15}
    fmt.Println("arr3的值:", arr3) // 输出 [5 0 15 0]
}

访问Golang数组元素

数组元素通过索引访问,索引范围是0到数组长度减1,访问方式分为单个元素访问和遍历访问两种。

1. 单个元素访问与修改

通过 数组名[索引] 的方式可以获取对应位置的元素值,也可以给该位置赋值修改元素。

package main

import "fmt"

func main() {
    arr := [...]int{1, 2, 3, 4}
    // 访问索引1的元素
    fmt.Println("索引1的元素:", arr[1]) // 输出 2
    // 修改索引2的元素
    arr[2] = 10
    fmt.Println("修改后的数组:", arr) // 输出 [1 2 10 4]
}

2. 遍历数组元素

遍历数组可以使用传统的for循环配合索引,也可以使用for range循环,for range循环会同时返回索引和对应元素值。

package main

import "fmt"

func main() {
    arr := [...]string{"Go", "Python", "Java", "C++"}

    fmt.Println("使用传统for循环遍历:")
    for i := 0; i < len(arr); i++ {
        fmt.Printf("索引%d: %sn", i, arr[i])
    }

    fmt.Println("使用for range循环遍历:")
    for index, value := range arr {
        fmt.Printf("索引%d: %sn", index, value)
    }

    // 如果不需要索引,可以用下划线忽略
    fmt.Println("忽略索引遍历:")
    for _, value := range arr {
        fmt.Println("元素值:", value)
    }
}

注意事项

  • 数组的长度是数组类型的一部分,[3]int[4]int 是不同的类型,不能直接赋值
  • 访问数组时如果索引超出范围,会触发运行时 panic,需要保证索引在合法范围内
  • 数组是值类型,赋值或者传参时会复制整个数组,修改副本不会影响原数组
数组适合存储固定长度的同类型数据,如果需要在运行时动态调整长度,应该选择Golang的切片类型。

Golang数组声明数组初始化数组访问数组元素修改时间:2026-07-23 10:51:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。