package main
import (
"fmt"
)
type Numbers struct {
x int
y int
}
func initial(number *Numbers) {
number.x = 1
number.y = 1
}
func final(number *Numbers) {
number = &Numbers{2, 2}
}
func main() {
p := Numbers{0, 0}
fmt.Println(p) //Prints {0 0}
initial(&p)
fmt.Println(p) //Prints {1 1}
final(&p)
fmt.Println(p) //Expected to print {2, 2} but prints {1, 1}
}
为什么initial
函数修改指针,而final
函数修改指针的副本?
initial
和final
都有自己的内存地址;initial
设法改变main
中定义的p
,而final
不能.
任何关于为什么会是这样的解释都将不胜感激.