golang:从切片中删除一个元素

Posted IGuoSJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang:从切片中删除一个元素相关的知识,希望对你有一定的参考价值。

package main

import "fmt"

/*
 Author: Guo
 Date: 3/16/21 2:24 PM
 Description:
 Company: 
 Updated: ??@??@?? ????
*/

//方式一:使用copy()
func removeSample1(in []interface, index int) ([]interface, bool) 
	if len(in) == 0 || index < 0 
		return in, false
	
	if len(in)-1 == index 
		return in[:len(in)-1], true
	
	if len(in)-1 < index 
		return in, false
	
	copy(in[index:], in[index+1:])
	return in[:len(in)-1], true

//方式二:使用append()
func removeSample2(in []interface, index int) ([]interface, bool) 
	if len(in) == 0 || index < 0 
		return in, false
	
	if len(in)-1 == index 
		return in[:len(in)-1], true
	
	if len(in)-1 < index 
		return in, false
	
	return append(in[:index], in[index+1:]...), true


func main() 
	in1 := make([]interface, 0)
	fmt.Println(removeSample2(in1, -1))
	fmt.Println(removeSample2(in1, 0))
	in2 := []interface1
	fmt.Println(removeSample2(in2, -1))
	fmt.Println(removeSample2(in2, 0))
	fmt.Println(removeSample2(in2, 1))
	in3 := []interface1, 2, 3, 4
	fmt.Println(removeSample2(in3, 0))
	in4 := []interface1, 2, 3, 4
	fmt.Println(removeSample2(in4, 1))
	in5 := []interface1, 2, 3, 4
	fmt.Println(removeSample2(in5, 2))


//其中返回的bool值表示要删除的元素是否存在

执行结果:

[] false
[] false
[1] false
[] true
[1] false
[2 3 4] true
[1 3 4] true
[1 2 4] true

以上是关于golang:从切片中删除一个元素的主要内容,如果未能解决你的问题,请参考以下文章

在golang中从切片中查找和删除元素

golang 从切片中删除元素

Golang basic_leaming2 语言容器

Golang basic_leaming2 语言容器

Golang 删除切片指定元素

Golang 删除切片指定元素