当我遵循有关数组和 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]

10-04 13:19