为了账号安全,请及时绑定邮箱和手机立即绑定

字符串指针

字符串指针

Go
慕勒3428872 2021-06-15 05:00:04
考虑以下程序(http://play.golang.org/p/IbAstvudtE):package mainimport (    "fmt")func changeStringValueNotOK(dest *string, src string) {    dest = &src}func changeStringValueOK(dest *string, src string) {    *dest = src}func main() {    a := "Hello"    b := "World"    changeStringValueNotOK(&a, b)    fmt.Println(a) // still "Hello"    changeStringValueOK(&a, b)    fmt.Println(a) // now "World"}我的目标是调用一个函数并更改字符串的值。与第二个功能一起工作正常,但不适用于第一个功能。问:是什么意思*dest = src相比dest = &src?我猜前者是“dest 的内容现在是 src”,后者是“更改 dest 变量,使其现在指向 src 的地址”,它丢弃了以前的值,但不是 a. 但即使我是对的,我也不明白这是如何*dest = src运作的。我希望我的问题不是太模糊。
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

*dest = src

is:将 指向的值设置dest为 中的值src。所以它是有效的。

dest = &src

is:将 的值设置dest为 的地址src。由于 dest 是changeStringValueNotOK更改的形式参数(仅针对指针,而不针对被指针方)仅在本地可见。由于更改后的值并未真正使用,因此它的总效果是无操作。


查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信