切片元素删除
删除切片中元素
安装: go get github.com/erdong01/kit
import (
"fmt"
"testing"
"github.com/erdong01/kit/util/slice"
)
// 通过查找切片元素删除
func TestDel(t *testing.T) {
var data = []int{1, 2, 3, 4, 5}
slice.Del(&data,3)
fmt.Println("data", data)
}
//输出: data [1 2 4 5]
// 通过切片下标删除
func TestDelByIndex(t *testing.T) {
var data = []int{1, 2, 3, 4, 5}
slice.DelByIndex(&data, 2)
fmt.Println("data", data)
}
//输出:data [1 2 4 5]
//通过查找切片元素删除
func Del[T comparable](s *[]T, val T) {
temp := *s
if len(temp) == 0 {
return
}
var i int
for key, v := range temp {
if v != val {
temp[i] = temp[key]
i++
}
}
*s = temp[:i]
}
// 通过切片下标删除
func DelByIndex[T any](s *[]T, index int) {
temp := *s
count := len(temp)
if count == 0 || index > count {
return
}
count--
var i int = index
for index < count {
index++
temp[i] = temp[index]
i++
}
*s = temp[:i]
}
本作品采用《CC 协议》,转载必须注明作者和本文链接