Go 语言 数组与切片的操作指南

Go阿木 发布于 2025-06-22 10 次阅读


Go 语言数组与切片操作指南

在Go语言中,数组(Array)和切片(Slice)是两种非常常用的数据结构。它们在处理数据时提供了灵活性和效率。本文将围绕Go语言中的数组与切片操作,详细介绍它们的定义、特点、操作方法以及在实际编程中的应用。

数组(Array)

定义

数组是固定大小的序列,每个元素类型相同。在Go语言中,数组通过指定元素类型和长度来定义。

go

var arr [5]int // 定义一个长度为5的整型数组


特点

1. 固定长度:一旦定义,数组的长度不可改变。

2. 内存连续:数组元素在内存中是连续存储的。

3. 索引访问:通过索引访问数组元素,索引从0开始。

操作

初始化

go

arr := [5]int{1, 2, 3, 4, 5} // 初始化数组


索引访问

go

fmt.Println(arr[0]) // 输出:1


索引赋值

go

arr[2] = 10


遍历

go

for i := 0; i < len(arr); i++ {


fmt.Println(arr[i])


}


数组拷贝

go

var arr2 [5]int


copy(arr2, arr) // 将arr数组拷贝到arr2数组


切片(Slice)

定义

切片是数组的一个片段,它包含数组的部分元素。切片通过三个参数定义:底层数组、起始索引和结束索引。

go

var slice []int = arr[1:4] // 从arr数组的索引1开始,到索引4结束的切片


特点

1. 动态长度:切片长度是可变的。

2. 引用传递:切片是底层数组的引用,修改切片会修改底层数组。

3. 内存连续:切片元素在内存中是连续存储的。

操作

初始化

go

slice := []int{1, 2, 3, 4, 5} // 初始化切片


索引访问

go

fmt.Println(slice[0]) // 输出:1


索引赋值

go

slice[2] = 10


遍历

go

for i, v := range slice {


fmt.Println(i, v)


}


切片拷贝

go

slice2 := make([]int, len(slice)) // 创建一个长度与slice相同的切片


copy(slice2, slice) // 将slice拷贝到slice2


切片扩展

go

slice = append(slice, 6) // 在slice末尾添加一个元素


切片截取

go

slice = slice[:2] // 截取slice的前两个元素


切片删除

go

slice = append(slice[:2], slice[3:]...) // 删除slice的第3个元素


数组与切片的区别

1. 长度:数组长度固定,切片长度可变。

2. 内存连续:数组元素在内存中连续存储,切片可能不连续。

3. 引用传递:数组是值传递,切片是引用传递。

实际应用

在Go语言的实际编程中,数组与切片广泛应用于各种场景,如:

1. 数据存储:存储固定大小的数据,如数据库索引。

2. 数据传输:在函数间传递数据,避免数据复制。

3. 动态数据结构:实现动态数组、链表等数据结构。

总结

本文详细介绍了Go语言中的数组与切片操作。通过学习本文,读者可以掌握数组与切片的定义、特点、操作方法以及在实际编程中的应用。在实际编程中,合理运用数组与切片可以提高代码效率,降低内存消耗。