20 数组与切片之切片的内置函数

在前一篇文章中,我们详细讨论了 Go 语言中的数组与切片的基本用法。本篇文章将集中阐述切片的内置函数及其应用。了解这些内置函数将帮助你更高效地操作切片,提高代码的可读性和运行效率。

1. 切片的基本概述

在开始之前,我们再回顾一下切片的定义。切片是 Go 语言对数组的一种抽象,它提供了动态大小的可变数组功能。切片可以通过数组的一个范围构造,具有长度和容量属性,支持快速地对数据进行增删改查。

2. 内置函数概述

Go 语言为切片提供了一些非常实用的内置函数,我们将在以下几部分具体介绍每个函数及其用法。

2.1 len()

len() 用于返回切片的长度。切片的长度是指切片中实际包含的元素数量。

1
2
3
4
5
6
7
8
9
10
package main

import (
"fmt"
)

func main() {
slice := []int{1, 2, 3, 4, 5}
fmt.Println("切片的长度为:", len(slice)) // 输出: 切片的长度为: 5
}

2.2 cap()

cap() 用于返回切片的容量。切片的容量是指在切片背后数组长度的总和,即从切片第一个元素开始到底层数组的长度。

1
2
3
4
5
6
7
8
9
10
package main

import (
"fmt"
)

func main() {
slice := make([]int, 3, 5) // 长度为3,容量为5
fmt.Println("切片的容量为:", cap(slice)) // 输出: 切片的容量为: 5
}

2.3 append()

append() 用于向切片添加一个或多个元素,并返回新的切片。如果切片的容量不足以容纳新元素,则会创建一个更大的数组。

1
2
3
4
5
6
7
8
9
10
11
package main

import (
"fmt"
)

func main() {
slice := []int{1, 2, 3}
slice = append(slice, 4, 5) // 向切片添加元素4和5
fmt.Println("添加后的切片:", slice) // 输出: 添加后的切片: [1 2 3 4 5]
}

2.4 copy()

copy() 函数用于将一个切片的元素复制到另一个切片。它返回复制的元素数量。

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import (
"fmt"
)

func main() {
source := []int{1, 2, 3, 4}
dest := make([]int, 2)
n := copy(dest, source) // 复制源切片的元素到目标切片
fmt.Println("目标切片:", dest) // 输出: 目标切片: [1 2]
fmt.Println("复制的元素数量:", n) // 输出: 复制的元素数量: 2
}

2.5 切片操作的示例

下面的示例演示了如何使用这些内置函数结合起来对切片进行操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
"fmt"
)

func main() {
// 初始化一个切片
slice := []int{10, 20, 30}

// 使用len()和cap()
fmt.Println("初始切片:", slice)
fmt.Println("长度:", len(slice), "容量:", cap(slice))

// 添加元素
slice = append(slice, 40, 50)
fmt.Println("添加元素后的切片:", slice)

// 复制切片
copySlice := make([]int, 3)
n := copy(copySlice, slice)
fmt.Println("复制后的切片:", copySlice)
fmt.Println("复制的元素数量:", n)

// 显示最终结果
fmt.Println("最终的切片长度:", len(slice), "容量:", cap(slice))
}

3. 小结

通过上述示例,我们详细介绍了切片的内置函数,包括 len()cap()append()copy()。掌握这些函数的使用方法可以帮助我们更灵活、高效地处理切片数据。

在下一篇文章中,我们将重点介绍 Go 语言中的映射(Map)的定义与使用。请继续关注,让我们一起深入探索 Go 语言的更多特性。

20 数组与切片之切片的内置函数

https://zglg.work/go-zero/20/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-11

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论