- 非指针,删除元素,失败,并没有影响到源切片
func TestDelOneElementFromSlice(t *testing.T) {
arr := []int{1,2,3,4}
fmt.Printf("test : %p\n",arr)
drop1(&arr)
fmt.Println(arr)
}
//非指针接收切片
func drop1(arr []int) {
fmt.Printf("drop1 : %p\n",arr)
arr = arr[:len(arr)-1]
}
运行结果:
- 指针,删除元素,成功
func TestDelOneElementFromSlice(t *testing.T) {
arr := []int{1,2,3,4}
fmt.Printf("test : %p\n",arr)
drop2(&arr)
//swap(arr)
//drop1(arr)
fmt.Println(arr)
}
func drop2(arr *[]int) {
p := *arr
*arr = p[:len(p)-1]
fmt.Printf("drop2 : %p\n",arr)
fmt.Printf("drop2 p : %p\n",p)
}
运行结果:
- 交换元素,无需指针也可成功
func TestDelOneElementFromSlice(t *testing.T) {
arr := []int{1,2,3,4}
fmt.Printf("test : %p\n",arr)
//drop2(&arr)
swap(arr)
//drop1(arr)
fmt.Println(arr)
}
func swap(arr []int) {
arr[0],arr[1] = arr[1],arr[0]
}
运行结果: