package mainimport "fmt"//不论调用模式如何(调用者是值类型还是援用类型),真正决定是值拷贝还是地址拷贝的,要看办法的接收者是什么类型;//如: (p Person) 则进行的是值拷贝,(p *Person) 是地址拷贝;// 申明的变量, 不论是值类型,指针类型, 都能够调用setAge办法,setName 办法func main() { //var p Person //var p = new(Person) //var p3 = &Person{} var p4 = Person{ Name: "小明", Age: 12, } p4.setName() p4.setAge() fmt.Println(p4) var p5 = Person{ Name: "小笨", Age: 8, } p5.setName() p5.setAge() fmt.Println(p5)}type Person struct { Name string Age int}// 接收者为实例变量的正本,在办法内更改值不会影响原来的值func (p Person) setAge() { p.Age = 16}//接收者为实例变量地址的正本,在办法内更改值会扭转原来的值func (p *Person) setName() { p.Name = "小江"}