package main
import "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 = "小江"
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。