goalng 中结构体方法的区别使用

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 Ageint }// 接收者为实例变量的副本,在方法内更改值不会影响原来的值 func (p Person) setAge() { p.Age = 16 }//接收者为实例变量地址的副本,在方法内更改值会改变原来的值 func (p *Person) setName() { p.Name = "小江" }

    推荐阅读