加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 18:14:52 所属栏目:大数据 来源:网络整理
导读:最近在写练手项目的时候,需求一个功能: 实现通过数组或者切片的索引删除 任意类型数组 或者切片的内容,并且返回删除后的结果集,找了半天发现 官方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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读