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

目录
相关文章
|
7月前
|
Go 索引
Go 语言中同一 slice 上的切片其底层数组是否是同一个
Go 语言中同一 slice 上的切片其底层数组是否是同一个
56 0
|
7月前
|
Go
golang力扣leetcode 347.前K个高频元素
golang力扣leetcode 347.前K个高频元素
66 0
|
2月前
|
存储 缓存 测试技术
golang slice相关常见的性能优化手段
【10月更文挑战第23天】本文介绍了 Go 语言中切片使用的四个优化技巧:预分配容量、减少中间切片的创建、利用切片的复用特性和合理使用 `copy` 函数。通过这些方法,可以有效提高程序性能,减少不必要的内存分配和数据复制操作。每个技巧都附有详细的原理说明和代码示例,帮助开发者更好地理解和应用。
|
3月前
|
Go
Golang语言之切片(slice)快速入门篇
这篇文章是关于Go语言中切片(slice)的快速入门教程,详细介绍了切片的概念、定义方式、遍历、扩容机制、使用注意事项以及相关练习题。
38 5
|
3月前
|
Go
Golang语言基础之接口(interface)及类型断言
这篇文章是关于Go语言中接口(interface)及类型断言的详细教程,涵盖了接口的概念、定义、实现、使用注意事项以及类型断言的多种场景和方法。
41 4
|
4月前
|
人工智能 Go
go slice 扩容实现
go slice 扩容实现
54 3
|
4月前
|
人工智能 编译器 Go
go slice 基本用法
go slice 基本用法
58 1
|
3月前
|
Go
Golang语言基础数据类型之字符类型
这篇文章介绍了Go语言中的字符类型,包括字符概述、byte和rune类型的定义、转义字符的使用以及如何遍历字符串获取字符的示例。
19 0
|
4月前
|
存储 算法 Go
|
6月前
|
Java Go
Go 中 slice 的内存管理机制
Go 中 slice 的内存管理机制