切片元素删除

删除切片中元素

安装: 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]
}
posted @ 2023-04-04 16:20  耳东01  阅读(19)  评论(0)    收藏  举报