golang實現通過索引刪除任意類型的slice元素

最近在寫練手項目的時候,需求一個功能: 實現通過數組或者切片的索引刪除 任意類型數組或者切片的內容,並且返回刪除後的結果集,找了半天發現  官方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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章