当我关注数组和切片的golang blog post之后,我尝试将指向切片的指针传递给修改基础len
属性的函数在切片标题中:
func PtrSubtractOneFromLength(slicePtr *[]byte) {
slice := *slicePtr
*slicePtr = slice[0 : len(slice)-1]
}
当我试图将其重构为:
func PtrSubtractOneFromLength(slicePtr *[]int) {
*slicePtr = *slicePtr[0 : len(*slicePtr)-1]
}
我收到此错误
cannot slice slicePtr (type *[]int)
slice := *slicePtr
声明中的魔力在哪里?
答案 0 :(得分:4)
切片表达比解除引用更强。试试这个:
*slicePtr = (*slicePtr)[0 : len(*slicePtr)-1]