将指针传递给函数允许修改它们引用的值。但是,需要了解指针的内部工作原理才能正确执行此操作。
要修改指针指向的值,必须取消引用指针。在 Go 中,星号运算符 (*) 用于此目的。通过取消引用指针,您可以访问它指向的基础值。
主要区别在于更改指针的值和更改其值之间指向.为指针变量分配新值只会更改它存储的地址。例如,下面的代码片段不会修改指向的值:
func f(p *Test) {
p = &Test{4}
}
要修改指向的值,需要使用解引用运算符。这可以显式或隐式完成。
显式解除引用:
func f(p *Test) {
*p = Test{4}
}
隐式取消引用:
func f(p *Test) {
p.Value = 4
}
在这两种情况下,p 指向的值都会更改。
将指针传递给指针(*测试)允许修改主函数中存储的指针值。但是,它不会改变原始指针指向的值。
func f(p **Test) {
*p = &Test{4}
}
总之,在将指针传递给函数时,了解修改指针的值和修改其指向的值之间的区别至关重要。取消引用指针对于执行后一个操作至关重要,从而可以修改基础数据值。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3