Go 语言中的数组:声明、初始化与应用

06-01 738阅读

Go 语言的数据结构中,数组是一个基本的构成元素,它能存储一系列固定长度的项,这些项具有相同的类型。尽管在 Go 中切片的使用更为普遍,数组仍然是理解更高级数据结构如切片和map的基础。本文将详细探讨 Go 语言中数组的声明、初始化和相关操作,以及它们在内存中的表现。


文章目录

      • 1、数组基础
        • 1.1、数组简介
        • 1.2、声明数组
        • 1.3、数组在内存中的结构
        • 2、数组操作
          • 2.1、遍历数组
          • 2.2、初始化数组
          • 3、多维数组
          • 4、将数组传递给函数

            1、数组基础

            1.1、数组简介

            在 Go 语言中,数组是一个具有固定长度和类型的数据项序列。数组的长度被定义为类型的一部分,因此[5]int和[10]int被视为不同的类型。数组在声明时会根据指定的顺序进行初始化,每个元素默认为其类型的零值。

            1.2、声明数组

            数组的声明遵循以下格式:

            var identifier [len]type
            

            例如,声明一个整型数组:

            var arr1 [5]int
            
            1.3、数组在内存中的结构

            在内存中,数组的每个元素都连续存储。当声明一个数组,如var arr1 [5]int,其所有元素默认初始化为0。数组的长度是固定的,并且必须在编译时确定,以便系统分配内存。


            2、数组操作

            2.1、遍历数组

            数组的遍历通常通过索引完成,使用for循环是最常见的方法:

            package main
            import "fmt"
            func main() {
                var arr1 [5]int
                // 初始化数组
                for i := 0; i  
            

            输出示例:

            Array at index 0 is 0
            Array at index 1 is 2
            Array at index 2 is 4
            Array at index 3 is 6
            Array at index 4 is 8
            
            2.2、初始化数组

            如果数组的值已知,可以使用数组字面量进行初始化:

            var arrAge = [5]int{18, 20, 15, 22, 16}
            var arrKeyValue = [5]string{3: "Chris", 4: "Ron"}
            

            使用key: value语法可以指定特定索引的值,未指定的索引将使用类型的零值。


            3、多维数组

            Go 语言支持多维数组,例如:

            var matrix [3][5]int
            

            这表示一个3行5列的二维整型数组。多维数组在Go中是矩形的,每个维度的长度必须相同。


            4、将数组传递给函数

            在 Go 中,直接传递一个大数组到函数通常不是性能最优的选择,因为这会涉及到拷贝整个数组的成本。更常见的做法是:

            • 传递数组的指针
            • 使用切片,这是更常见的做法

              以下是通过传递数组指针的示例:

              package main
              import "fmt"
              func main() {
                  array := [3]float64{7.0, 8.5, 9.1}
                  x := sum(&array)
                  fmt.Printf("The sum of the array is: %f", x)
              }
              func sum(a *[3]float64) (sum float64) {
                  for _, v := range a {
                      sum += v
                  }
                  return
              }
              

              输出结果:

              The sum of the array is: 24.600000
              

              虽然这种方法有效,但在 Go 中更推荐使用切片,因为切片提供了更多灵活性和强大的功能。

              Go 语言中的数组:声明、初始化与应用
              (图片来源网络,侵删)
              Go 语言中的数组:声明、初始化与应用
              (图片来源网络,侵删)
              Go 语言中的数组:声明、初始化与应用
              (图片来源网络,侵删)
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码