package main
import "fmt"
type coordinate struct {
x int
y int
}
func change1(c coordinate) {
c.x = 10
}
func change2(c *coordinate) {
c.x = 30
}
func main() {
c := coordinate{20, 30}
change1(c)
fmt.Println(c.x) //20
change2(&c)
fmt.Println(c.x) //30
}
从上例可以看到,当传入结构体值时,对结构体内部类型的修改不影响原来结构体的值。
但是,需要注意的是,如果结构体中包含引用类型,即使是传递结构体值,对结构体内引用类型的修改仍会影响原来的结构体,因为引用类型的传值本质上是共享底层数据的。