当我遵循有关数组和 slice 的golang blog post时,我尝试将指向 slice 的指针传递给修改 slice 头中基础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
语句中的魔术在哪里?
最佳答案
slice 表达式的绑定(bind)比取消引用更强。试试这个:
*slicePtr = (*slicePtr)[0 : len(*slicePtr)-1]