切片指针切片

时间:2015-02-28 19:51:38

标签: go

当我关注数组和切片的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声明中的魔力在哪里?

1 个答案:

答案 0 :(得分:4)

切片表达比解除引用更强。试试这个:

*slicePtr = (*slicePtr)[0 : len(*slicePtr)-1]