切片指针到切片

tar*_*lah 5 go

当我关注这篇关于数组和切片的golang 博客文章时 ,我尝试将指向切片的指针len传递给修改切片标头中基础属性的函数:

func PtrSubtractOneFromLength(slicePtr *[]byte) {
    slice := *slicePtr
    *slicePtr = slice[0 : len(slice)-1]
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将其重构为:

func PtrSubtractOneFromLength(slicePtr *[]int) {
    *slicePtr = *slicePtr[0 : len(*slicePtr)-1]
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

cannot slice slicePtr (type *[]int)
Run Code Online (Sandbox Code Playgroud)

声明中的魔力在哪里slice := *slicePtr

fuz*_*fuz 7

切片表达式的绑定比取消引用更强。尝试这个:

*slicePtr = (*slicePtr)[0 : len(*slicePtr)-1]
Run Code Online (Sandbox Code Playgroud)