如何解释Golang中关于切片指针的这种奇怪现象?

时间:2019-03-13 12:52:18

标签: pointers go

在下面的代码中:

s4 := []int{0, 1, 2, 3, 4, 5}
sp4 := &s4
sp5 := &((*sp4)[1:])

我想以s5的形式获取指针的s4[1:]切片,但这会导致错误:

cannot take the address of (*sp4)[1:]

但是如果我这样写:

s4 := []int{0, 1, 2, 3, 4, 5}
sp4 := &s4
s5 := (*sp4)[1:]
sp5 := &s5

有效!

我进行了一些测试,发现当我更改* sp5时,s4会同时更改。这就是我所需要的。

但是为什么我不能写sp5 := &((*sp4)[1:])

0 个答案:

没有答案