golang实现通过索引删除任意类型的slice元素

简介: 最近在写练手项目的时候,需求一个功能: 实现通过数组或者切片的索引删除 任意类型数组或者切片的内容,并且返回删除后的结果集,找了半天发现  官方package中没有Java.util.Arrays 这样的工具类的实现,只好自己写一个 ,由于golang中没有c++ 、java中泛型的概念,所以只...

最近在写练手项目的时候,需求一个功能: 实现通过数组或者切片的索引删除 任意类型数组或者切片的内容,并且返回删除后的结果集,找了半天发现  官方package中没有Java.util.Arrays 这样的工具类的实现,只好自己写一个 ,由于golang中没有c++ 、java中泛型的概念,所以只能将工具方法通过 反射类实现一下,具体代码如下:

package tools

import (
	"errors"
	"reflect"
)

//删除切片
func DeleteSlice(slice interface{}, index int) (interface{}, error) {
	sliceValue := reflect.ValueOf(slice)
	length := sliceValue.Len()
	if slice == nil || length == 0 || (length-1) < index {
		return nil, errors.New("error")
	}
	if length-1 == index {
		return sliceValue.Slice(0, index).Interface(), nil
	} else if (length - 1) >= index {
		return reflect.AppendSlice(sliceValue.Slice(0, index), sliceValue.Slice(index+1, length)).Interface(), nil
	}
	return nil, errors.New("error")
}



练手项目ActivedRouter  https://github.com/UsherYue/ActivedRouter  ,求start

目录
相关文章
|
3月前
|
Go
golang力扣leetcode 347.前K个高频元素
golang力扣leetcode 347.前K个高频元素
25 0
|
3月前
|
Go
golang力扣leetcode 380.O(1)时间插入、删除和获取随机元素
golang力扣leetcode 380.O(1)时间插入、删除和获取随机元素
36 0
|
3月前
|
存储 Go
Golang底层原理剖析之slice类型与扩容机制
Golang底层原理剖析之slice类型与扩容机制
22 0
|
3月前
|
Go
golang力扣leetcode 34.在排序数组中查找元素的第一个和最后一个位置
golang力扣leetcode 34.在排序数组中查找元素的第一个和最后一个位置
68 0
|
3月前
|
Go
golang力扣leetcode 462.最少移动次数使数组元素相等II
golang力扣leetcode 462.最少移动次数使数组元素相等II
34 0
|
2月前
|
存储 安全 Java
Go Slice的底层实现原理深度解析
在Go语言的世界里,切片(Slice)是一种极其重要的数据结构,它以其灵活性和高效性在众多编程场景中扮演着核心角色。本文将深入探讨Go切片的底层实现原理,通过实例和源码分析,带你领略Go语言设计之美。
|
3月前
|
Java Go C++
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
31 0
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
|
3月前
|
Java Go C++
Golang每日一练(leetDay0109) 拼接最大数、区间和的个数
Golang每日一练(leetDay0109) 拼接最大数、区间和的个数
29 0
Golang每日一练(leetDay0109) 拼接最大数、区间和的个数
|
3月前
|
Java Go C++
Golang每日一练(leetDay0106) 超级丑数、右侧小于当前元素的个数
Golang每日一练(leetDay0106) 超级丑数、右侧小于当前元素的个数
30 0
Golang每日一练(leetDay0106) 超级丑数、右侧小于当前元素的个数
|
3月前
|
算法 Java Go
Golang每日一练(leetDay0098) 生命、Nim、猜数字游戏
Golang每日一练(leetDay0098) 生命、Nim、猜数字游戏
28 0
Golang每日一练(leetDay0098) 生命、Nim、猜数字游戏