Go语言选择receiver参数类型 官网
在Go语言里,receiver参数类型有值类型和指针类型。值类型的receiver是对象副本,指针类型则是对象地址。 // 值类型 receiverpackage mainimport "fmt"type Person struct { Name string}func (p Person) SayHello() { fmt.Println("Hello, my name is ", p.Name)} // 运行结果:Hello, my name is [姓名]func main() { p := Person{Name: "John"} p.SayHello()} 若用指针类型,代码如下: // 指针类型 receiverpackage mainimport "fmt"type Person struct { Name string}func (p *Person) SayHello() { fmt.Println("Hello, my name is ", p.Name)} // 运行结果:Hello, my name is [姓名]func main() { p := &Person{Name: "John"} p.SayHello()} 选择时要考虑是否需修改对象状态,若要修改就选指针类型。