当前位置:   article > 正文

编程笔记 Golang基础 022 数组

编程笔记 Golang基础 022 数组

在Go语言中,数组是一种基本的数据结构,用于存储相同类型且长度固定的元素序列。

一、数组定义和初始化

// 声明并初始化一个整数类型的数组,包含3个元素
var numbers [3]int = [3]int{1, 2, 3}

// 或者简写形式(编译器会根据初始值数量推断数组长度)
var numbers2 = [3]int{4, 5, 6}

// 同时声明但不初始化
var uninitialized [5]int

// 在函数内部声明并初始化数组
func initArray() {
    var arr [4]string
    arr[0] = "apple"
    arr[1] = "banana"
    arr[2] = "cherry"
    arr[3] = "date" // 不需要显式为arr[3]赋值,因为Go会自动为剩余位置填充零值
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

二、访问数组元素

package main

import "fmt"

func main() {
    fruits := [5]string{"apple", "banana", "cherry", "date", "elderberry"}

    // 访问数组元素
    fmt.Println(fruits[0]) // 输出: apple
    fmt.Println(fruits[2]) // 输出: cherry

    // 修改数组元素
    fruits[1] = "mango"
    fmt.Println(fruits)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

三、遍历数组

package main

import "fmt"

func main() {
    daysOfWeek := [7]string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}

    // 使用for循环遍历数组
    for index, day := range daysOfWeek {
        fmt.Printf("Day %d: %s\n", index+1, day)
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

四、数组作为参数

package main

import "fmt"

// 定义一个接受整数数组的函数
func sum(numbers [3]int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}

func main() {
    nums := [3]int{10, 20, 30}
    result := sum(nums)
    fmt.Println("Sum of array:", result)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

六、特点

  1. 存储和访问效率:数组的元素在内存中是连续存放的,因此可以通过索引(下标)快速访问和修改元素,对于随机访问操作具有较高的性能。

  2. 简单直观:数组提供了一种直接的方式来组织和管理同类型的数据集合,方便进行批量处理或迭代操作。

  3. 类型安全:每个数组都有严格的类型定义,只能存放指定类型的数据,确保了程序的安全性和一致性。

  4. 编程教育与理解基础数据结构:理解和掌握数组是学习更复杂数据结构(如切片、链表等)的基础,有助于对底层数据管理有深入的理解。

  5. 系统资源分配清晰:由于数组大小固定,编译时即可知道所需内存空间,这对于编写高效率且资源可控的程序十分重要。

七、注意事项

  1. 固定长度:在Go语言中,数组的长度是其类型的一部分,并且一旦声明后不可改变,这意味着你不能动态地扩展或收缩数组的容量。

  2. 值语义:数组是值类型,当数组作为函数参数传递时,会复制整个数组内容到新的内存空间。这意味着如果数组很大,可能会导致额外的性能开销。

  3. 默认零值:未初始化的数组元素将被赋予该类型对应的零值,例如整数为0,字符串为空字符串,自定义类型为零值状态。

  4. 不适合插入删除:因为数组的元素存储是连续的,所以在数组中间插入或删除元素会导致所有后续元素需要移动位置,这在实际使用中并不高效。

  5. 实用场景有限:虽然数组是基本的数据结构,但在许多实际应用中,开发者更多地倾向于使用切片(slices),它们基于数组实现,但提供了动态伸缩的能力,更加灵活。

  6. 语法细节:数组的声明通常包含数组长度和元素类型,例如 var arr [5]int 表示一个长度为5的整数数组。

  7. 索引越界检查:Go语言运行时不会自动检查数组索引是否越界,超出数组长度的索引会导致程序崩溃。因此,在使用数组时需特别注意边界问题。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/137582
推荐阅读
相关标签
  

闽ICP备14008679号