package main
import"fmt"type Person struct{
id int
name string}funcshowPerson2(p *Person){
fmt.Println("showPerson2",p)
p.id =1
p.name ="nike"}// 值传递,拷贝了一份副本// func showPerson(p Person){// p.id = 1// p.name = "nike"// fmt.Println(p)// }funcmain(){var tom = Person{
id:100,
name:"tom",}// 传递结构体指针参数,方法改变传递对象的值,源对象也会改变
per :=&tom
fmt.Println(tom)
fmt.Println("-------")showPerson2(per)
fmt.Println(per)// 传递结构体参数,方法改变传递对象的值,源对象不会改变// fmt.Println(tom)// fmt.Println("-------")// showPerson(tom)// fmt.Println(tom)}
结构体嵌套
package main
import"fmt"type Dog struct{
name string
age int
color string}type Person struct{
dog Dog
name string
age int}funcmain(){var p Person
p.name ="张三"
p.age =100
p.dog.color ="black"
p.dog.age =11
p.dog.name ="大黄"
fmt.Println(p)}