如果我有一个不是结构的类型,我如何用指针接收器改变它的值?
例如,给定following code:
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
答案 0 :(得分:3)
答案 1 :(得分:0)
为您的函数定义:
func (i *MyInt) Change() {
newValue := MyInt(32)
i = &newValue
}
当你调用这个函数时:
myInt := MyInt(64)
myInt.Change()
myInt
的值将传递给i
,因此在致电func (i *MyInt) Change()
后,您只需修改i
,而不是myInt
。