Golang进阶

【Golang】删除一个slice中的一个或多个元素,以及sli

2018-01-25  本文已影响196人  qishuai

其实这都是一些基础问题,但是自己总是忘记,在这里做个记录。

  1. 删除slice中的一个或多个元素

s = append(s[:i], s[i+1:]...)

我第一次看到这种结构时感觉很迷茫,其实可以分开来看。首先s[:i]相当于slice截取,也就是说s[:i]本身就是一个slice。然后s[i+1:]...相当于变长参数。append()函数内部,通过循环append()递归操作即可。s本身的长度会发生改变,因为append()参数的是一个新的slice,然后赋值给s。但是s的容量不会变化。

  1. slice共享问题
a1 := []int{1, 2, 3, 4, 5}
a2 := a1

a1 = append(a1[:1], a1[2:]...)

fmt.Println(a2)
fmt.Println(a1)

//output:
[1 3 4 5 5]
[1 3 4 5]
上一篇下一篇

猜你喜欢

热点阅读