我通过引用将一个结构传递给一个函数。为什么我通过的结构不变
我期待着如果我定义和更改函数内部的结构,我可以在外面获得新的值。
但它没有发生。
任何人都可以解释为什么吗?
package main
import "fmt"
func intbyRef(i *int) {
*i = 10
}
type ttt struct {
a int
}
func change(t *ttt) {
var p ttt = ttt{7}
fmt.Println(p)
t = &p
}
func main() {
i := 1
var t *ttt
fmt.Println(i)
fmt.Println(t)
change(t)
intbyRef(&i)
fmt.Println(i)
fmt.Println(t)
}
您可以尝试在这里的代码:https://play.golang.org/p/I-GIdIZ9c6
请考虑忘却这个 “参照” 名不副实。在某些语言中,有*的区别:例如,在Python和PHP中,整数类型的值通过值传递,类类型的对象通过引用传递。相比之下,在Go中,所有值都通过值传递,只要您可以显式传递指向值的指针即可,如果您希望被调用者修改指向的值,或者希望避免复制开销。 – kostix
考虑阅读[this](http://stackoverflow.com/a/25354231/720999)和[this](http://stackoverflow.com/a/23551970/720999)。 – kostix