📌  相关文章
📜  golang 中的数组 - Go 编程语言(1)

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

golang 中的数组 - Go 编程语言

在 Go 编程语言中,数组是一种固定长度、类型相同的数据结构。数组可以存储基本类型(比如字符串或整数)和复合类型(比如结构体)。

声明和初始化数组

在 Go 中,声明一个数组需要指定数组的长度和元素的类型。例如,声明一个长度为 5 的整数数组可以使用以下语句:

var arr [5]int

你可以在声明数组时初始化数组元素的值。例如:

var arr = [5]int{1, 2, 3, 4, 5}

如果你没有给定数组长度,则 Go 会根据初始化数组元素的个数自动推断出数组的长度。例如:

var arr = [...]int{1, 2, 3, 4, 5}

你可以通过以下方式访问数组元素:

fmt.Println(arr[0]) // 输出: 1
fmt.Println(arr[4]) // 输出: 5
遍历数组

可以使用 for 循环遍历数组中的元素。以下是一个遍历数组的例子:

var arr = [5]int{1, 2, 3, 4, 5}

for i := 0; i < len(arr); i++ {
    fmt.Println(arr[i])
}

可以使用 range 关键字遍历数组中的元素。以下是一个使用 range 关键字遍历数组的例子:

var arr = [5]int{1, 2, 3, 4, 5}

for _, value := range arr {
    fmt.Println(value)
}
数组的长度

数组的长度可以通过 len 函数获取。例如:

var arr = [5]int{1, 2, 3, 4, 5}

fmt.Println(len(arr)) // 输出: 5
数组作为函数参数

在 Go 中,数组是值类型。这意味着当你将一个数组传递给函数时,它会创建该数组的一个副本。如果你想修改原始数组,可以通过将数组指针传递给函数来实现。以下是一个将数组作为函数参数的例子:

func modifyArray(arr *[5]int) {
    for i := 0; i < len(*arr); i++ {
        (*arr)[i] = (*arr)[i] + 1
    }
}

func main() {
    var arr = [5]int{1, 2, 3, 4, 5}
    modifyArray(&arr)
    fmt.Println(arr) // 输出: [2, 3, 4, 5, 6]
}
数组切片

数组切片是一个长度可变的数组。它的内部实现使用了指针和长度变量来跟踪切片的长度和位置。如果要创建一个数组切片,可以使用以下语句:

var slice = []int{1, 2, 3, 4, 5}

可以使用 append 函数向数组切片中追加元素。例如:

var slice = []int{1, 2, 3, 4, 5}
slice = append(slice, 6)

fmt.Println(slice) // 输出: [1, 2, 3, 4, 5, 6]

可以使用 make 函数创建一个指定长度的数组切片。例如:

var slice = make([]int, 5)

fmt.Println(len(slice)) // 输出: 5
数组和数组切片的区别

数组和数组切片在 Go 中有着显著的区别。数组是一个固定长度的数据结构,而数组切片则可以根据需要动态扩展或收缩。

如果你需要一个长度固定的数据结构,你应该使用数组。如果你需要一个长度可变的数据结构,你应该使用数组切片。

结论

本文提供了关于 golang 中的数组的详细介绍。你学到了如何声明和初始化数组、如何遍历数组、如何获取数组的长度、如何把数组作为函数参数以及数组和数组切片的区别。这些基础知识对于入门 Go 编程语言的程序员非常重要。