考虑以下程序(http://play.golang.org/p/IbAstvudtE):
package main
import (
"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运作的。
我希望我的问题不是太模糊。
蓝山帝景
相关分类