go - slice 指向 slice 的指针

标签 go

当我关注这个 golang blog post关于数组和 slice ,我试图将一个指向 slice 的指针传递给一个函数,该函数修改 slice header 中的底层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]

关于go - slice 指向 slice 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28786137/

相关文章:

google-app-engine - Go 中的 _post_put_hook

postgresql - golang -- 使用用户名和密码连接到 postgresql 时无法创建用户

go - 为什么在 golang 中写入全局 map 时恢复不起作用

http - Go 中的虚拟主机

dictionary - golang maps预留多少内存?

go - 此代码中的 T 是什么

mongodb - 使用MongoDB投影

sql - 如何避免 slice 引用同一个内存块

regex - 什么是正则表达式来匹配 =,空格分隔后的所有事件?

linux - 为什么即使使用 nohup 也能捕获挂断信号?