Go 基础丨切片 slice
在 Go 语言中,数组的长度是固定的,但有时我们希望有一个长度可以动态改变的数据类型,这就是切片(slice)。
切片是对数组一个连续的引用。
以下是创建和使用切片的一些方法:
- 使用make创建切片
// 创建一个长度为5,容量为10的切片
slice := make([]int, 5, 10)
- 直接初始化切片
// 直接初始化切片
slice := []int{1, 2, 3, 4, 5}
- 切片的长度和容量
// 使用len()和cap()函数获取切片的长度和容量
length := len(slice)
capacity := cap(slice)
- 切片的添加元素
// 使用append()函数向切片添加元素
slice = append(slice, 6)
- 切片的拷贝
// 使用copy()函数拷贝切片
copy(destSlice, srcSlice)
- 切片的范围
// 使用[low:high]来获取原始切片的子切片,子切片包含原始切片从low到high-1的元素
subSlice := slice[1:3]
- nil切片
// 一个nil值的切片,长度和容量都是0,并没有底层数组
var nilSlice []int
if nilSlice == nil {
fmt.Println("Slice is nil")
}
- 切片的并发读写
// 切片是引用类型,可以在多个goroutine中并发读写,但要确保同步机制,比如使用mutex
var mutex sync.RWMutex
func Read(index int) int {
mutex.RLock()
defer mutex.RUnlock()
return slice[index]
}
func Write(index int, value int) {
mutex.Lock()
defer mutex.Unlock()
slice[index] = value
}
以上就是Go语言中关于切片的一些基本操作和使用方法。
评论已关闭