首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >golang 实现删除切片特定下标元素的方法

golang 实现删除切片特定下标元素的方法

原创
作者头像
浩瀚星河
发布2025-07-04 01:00:03
发布2025-07-04 01:00:03
1170
举报
文章被收录于专栏:golanggolang
  • 要求一:能够实现删除操作就可以。
  • 要求二:考虑使用比较高性能的实现。
  • 要求三:改造为泛型方法
  • 要求四:支持缩容,并旦设计缩容机制。
代码语言:go
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档