[英]Changing the value of a non-struct with a pointer receiver
如果我的类型不是结构体,如何使用指针接收器更改其值?
例如,给出以下代码 :
package main
import (
"fmt"
)
type MyInt int
func (i *MyInt) Change() {
newValue := MyInt(32)
i = &newValue
}
func main() {
myInt := MyInt(64)
fmt.Println(myInt)
myInt.Change()
fmt.Println(myInt)
}
它输出:
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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.