package main
import "fmt"
type Person struct {
Name string
Age int
}
func (p Person) a1() string {
return fmt.Sprintf("%v (%v years)", p.Name, p.Age)
}
func (p *Person) a2() string {
return fmt.Sprintf("%v (%v years)", p.Name, p.Age)
}
func main() {
a := Person{"Arthur Dent", 42}
z := &Person{"Zaphod Beeblebrox", 9001}
fmt.Println(a.a1(), z.a2())
}
想请教一下,p Person 是把方法放到值类型上,而p Person是放到指针上(不知道有没错,在自学中),那么那么为啥要分p Person,p Person,统一放p Person不行吗?或者什么应用场景下用p *Person,什么场景下用p Person### 题目描述
题目来源及自己的思路
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
当你需要修改 p 的时候要调用
func (p *Person) a2() string
指针类型的函数如果你调用
func (p Person) a2() string
这样的方法是修改不成功的,因为调用时使用的是 p 的一个copy