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

来源:互联网 发布:佐藤谦一 知乎 编辑:程序博客网 时间:2024/06/05 10:19

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

package toolsimport ("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

1 0
原创粉丝点击