Go 使用指针接收器更改非结构的值
如果我有一个不是结构的类型,我如何用指针接收器改变它的值 例如,考虑到: 它输出:Go 使用指针接收器更改非结构的值,go,Go,如果我有一个不是结构的类型,我如何用指针接收器改变它的值 例如,考虑到: 它输出: 64 64 为什么它不输出以下内容: 64 32 ?您正在更改指针的值,而不是指针指向的值 您将使用以下命令查看预期输出: 您正在更改指针的值,而不是指针指向的值 您将使用以下命令查看预期输出: 为您的函数定义: func (i *MyInt) Change() { newValue := MyInt(32) i = &newValue } 调用此函数时: myInt := MyIn
64
64
为什么它不输出以下内容:
64
32
?您正在更改指针的值,而不是指针指向的值 您将使用以下命令查看预期输出:
您正在更改指针的值,而不是指针指向的值 您将使用以下命令查看预期输出:
为您的函数定义:
func (i *MyInt) Change() {
newValue := MyInt(32)
i = &newValue
}
调用此函数时:
myInt := MyInt(64)
myInt.Change()
myInt
的值将传递给i
,因此在调用func(i*myInt)Change()
后,您只需修改i
,而不是myInt
函数定义:
func (i *MyInt) Change() {
newValue := MyInt(32)
i = &newValue
}
调用此函数时:
myInt := MyInt(64)
myInt.Change()
myInt
的值将传递给i
,因此在调用func(i*myInt)Change()
后,您只修改i
,而不是myInt
。我的困惑是因为我认为*i
是一种获取i
地址值的方法,因此无法用于设置值。不知道我为什么这么想。谢谢,我明白了。我的困惑是因为我认为*i
是一种获取i
地址值的方法,因此无法用于设置值。不知道我为什么这么想。谢谢