package main
import "fmt"
func DeleteAt[T any](slice []T, index int) []T {
if index < 0 || index > len(slice)-1 {
panic("index out of range")
}
// 前移
copy(slice[index:], slice[index+1:])
slice = slice[:len(slice)-1]
// 缩容
if cap(slice) >= len(slice)*2 {
newSlice := make([]T, len(slice))
copy(newSlice, slice)
return newSlice
}
return slice
}
func main() {
a := []int{1, 2, 3}
fmt.Println(DeleteAt(a, 2))
}
高性能操作直接在原切片对元素进行前移,然后截取;如果cap超过len的2倍,则创建一个起始长度容量更小的切片赋值
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。