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
地址值的方法,因此无法用于设置值。不知道我为什么这么想。谢谢