📜  Go语言-切片(1)

📅  最后修改于: 2023-12-03 15:31:03.304000             🧑  作者: Mango

Go语言-切片

什么是切片?

切片是Go语言中一种非常强大的数据结构,它是对数组的封装,能够动态地增加、缩减和访问数据。和数组不同的是,切片的长度是可以在运行时进行修改的。

声明一个切片

声明一个切片非常简单,可以使用 make 函数来创建一个切片,并指定切片的长度和容量:

s := make([]int, 5)    // 长度为5,容量也为5

也可以使用切片字面量来创建一个切片:

s := []string{"one", "two", "three"}
切片的容量和长度

切片有两个非常重要的属性:容量和长度。容量指的是底层数组的容量,而长度指的是切片当前所包含的元素个数。

s := make([]int, 5, 10)    // 长度为5,容量为10

使用 len() 函数可以获取切片的长度,使用 cap() 函数可以获取切片的容量。

切片的使用

切片可以像数组一样通过下标访问元素,也可以使用迭代器 for-range 循环来遍历切片中的元素。

s := []string{"one", "two", "three"}
fmt.Println(s[0])   // 输出:one
for _, value := range s {
    fmt.Println(value)
}
切片的动态增加

使用 append() 函数可以向切片中动态添加元素。

s := []string{"one", "two", "three"}
s = append(s, "four")

不过需要注意的是,当切片容量不够时,append() 函数会分配一个更大的数组并将已有元素复制到新的数组中,这样会导致性能损失。

切片的动态缩减

使用切片表达式可以对切片进行动态缩减。

s := []string{"one", "two", "three"}
s = s[:2]    // 缩减为长度为2的切片
切片的拷贝

使用 copy() 函数可以将一个切片中的元素拷贝到另一个切片中。

s1 := []string{"one", "two", "three"}
s2 := make([]string, len(s1))
copy(s2, s1)
总结

切片是Go语言中一种高效、灵活的数据结构,它能够动态地增加、缩减和访问数据,是处理大规模数据的首选。学习切片是掌握Go语言的基本功之一。