📜  Go 中的数组(1)

📅  最后修改于: 2023-12-03 14:41:32.473000             🧑  作者: Mango

Go 中的数组
简介

在 Go 编程语言中,数组是一种固定长度且类型相同的数据结构。数组元素的类型可以是任何合法的数据类型,包括内置类型和自定义类型。数组在声明时需要指定固定的长度,并且长度在定义后不可更改。

声明和初始化数组

可以使用以下语法声明数组:

var arrayName [length]dataType

其中,arrayName 是数组的名称,length 是数组的长度,dataType 是数组元素的数据类型。

可以选择使用以下方式来初始化数组:

  • 声明时初始化:
    var arrayName = [length]dataType{values}
    
  • 使用下标逐个初始化:
    arrayName := [length]dataType{value1, value2, value3, ...}
    
  • 不指定长度而使用自动推断:
    arrayName := [...]dataType{values}
    
数组访问

可以使用索引访问数组元素,索引从 0 开始。

arrayName[index]
数组长度和容量

通过使用 len() 函数,可以获取数组的长度,即数组中元素的数量。

length := len(arrayName)

对于数组来说,容量等于长度。

数组的遍历

可以使用 for 循环来遍历数组中的元素。

for index, value := range arrayName {
    // 使用 index 和 value 进行相应的操作
}
数组的比较

在 Go 中,数组是值类型,可以通过 ==!= 运算符来比较两个数组是否相等。

if array1 == array2 {
    // 数组相等
} else {
    // 数组不相等
}
获取数组的地址

可以通过数组名来获取数组在内存中的地址。

address := &arrayName
注意事项
  • 数组长度必须是常量表达式,不能是变量。
  • 数组是值类型,相当于复制了一份副本,而不是指向原始数组。
  • 数组越界访问将导致运行时错误。
  • 数组作为函数参数传递时,会创建一份副本。
示例代码
package main

import "fmt"

func main() {
    // 声明和初始化数组
    var numbers [5]int
    numbers = [5]int{1, 2, 3, 4, 5}
    
    // 使用下标逐个初始化
    fruits := [3]string{"apple", "banana", "orange"}
    
    // 自动推断长度
    colors := [...]string{"red", "green", "blue"}
    
    // 数组访问
    fmt.Println(numbers[2])
    
    // 数组长度
    fmt.Println(len(numbers))
    
    // 遍历数组
    for index, value := range fruits {
        fmt.Printf("fruits[%d] = %s\n", index, value)
    }
    
    // 数组比较
    var array1 [3]int
    var array2 [3]int
    array1 = [3]int{1, 2, 3}
    array2 = [3]int{1, 2, 3}
    if array1 == array2 {
        fmt.Println("Arrays are equal")
    } else {
        fmt.Println("Arrays are not equal")
    }
    
    // 获取数组的地址
    fmt.Printf("Address of array1: %p\n", &array1)
}

以上就是 Go 中数组的基本知识和用法。你可以在代码中进行实践并加深理解。Happy Coding!