c语言编程笔录

首页 >   > 笔记大全

笔记大全

Golang中Slice切片如何使用

更新时间:2023-11-29

什么是Slice切片?

在Golang中,Slice切片是动态数组的一种扩展,并且是在数组的基础上封装的一种类型,可以动态地调整容量。Slice切片由三部分组成:指针、长度和容量。指针指向第一个元素,长度表示切片中元素的个数,容量表示切片的容量大小。

package main
 
import "fmt"
 
func main() {
    // 创建一个长度为3,容量为5的切片
    slice := make([]int, 3, 5)
    fmt.Println(slice)
    fmt.Printf("切片的长度为:%d,容量为:%d", len(slice), cap(slice))
}

以上代码将会创建一个长度为3,容量为5的一个整型切片,并输出切片的内容、长度和容量。

Slice切片的使用

定义一个Slice切片,可以用两种方式:

  • 使用make()函数创建
  • 直接使用一个数组或一个已存在的Slice切片来创建

对于已经创建好的Slice切片,可以利用索引值进行访问和修改。

package main
 
import "fmt"
 
func main() {
    // 创建一个长度为3,容量为5的切片
    slice1 := make([]int, 3, 5)
    fmt.Println(slice1)
 
    // 直接使用一个数组或一个已存在的Slice切片创建
    arr := []int{1, 2, 3}
    slice2 := arr[1:]
    fmt.Println(slice2)
 
    // 访问和修改
    slice2[0] = 10
    fmt.Println(slice2)
}

以上代码将会输出切片的内容,并且使用索引进行修改值。

Slice切片的追加和删除元素

在Golang中,利用append()函数可以向切片中添加元素,并且可以同时添加多个元素。另外,在切片中删除元素时,可以使用append()函数和“...”来完成。

package main
 
import "fmt"
 
func main() {
    // 追加元素
    slice1 := []int{1, 2, 3}
    slice1 = append(slice1, 4, 5, 6)
    fmt.Println(slice1)
 
    // 删除元素
    slice2 := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
    slice2 = append(slice2[:3], slice2[6:]...)
    fmt.Println(slice2)
}

以上代码将会输出在切片中添加元素后的内容和删除后的内容。

总结

Golang中的Slice切片是动态数组的一种扩展,并且是在数组的基础上封装的一种类型,可以动态地调整容量。定义Slice切片,可以使用两种方式:使用make()函数创建和直接使用一个数组或一个已存在的Slice切片来创建。对于已经创建好的Slice切片,可以利用索引值进行访问和修改。在切片中添加元素可以使用append()函数,删除元素可以使用append()函数和“...”来完成。

Golang中的Slice切片在使用它时需要注意它的底层引用了一个数组,因此改变切片的元素也会改变底层数组的元素。此外,当切片容量不足时,会自动扩容,因此会带来一些额外的开销。不过,Slice切片的优点也非常明显:方便、高效、简洁。