切片元素删除

删除切片中元素

安装: 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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!