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