1 定义
在 Go 语言里,结构体的方法(method)是绑定到特定类型上的函数 ,
它让你可以用面向对象的风格(对象.方法()
)来操作结构体的数据。
2 方法的基本概念
方法的本质还是函数,只是它有一个接收者(receiver)。
接收者可以是:
值接收者 (
func (p Person) ...
)→ 接收者是结构体的副本。
指针接收者 (
func (p *Person) ...
)→ 接收者是结构体的地址,可以修改原结构体的内容。
3 语法
func (接收者名 接收者类型) 方法名(参数列表) 返回值列表 {
// 方法体
}
举例:
Go
package main
import "fmt"
type Person struct {
Name string
Age int
}
// 值接收者方法
func (p Person) SayHello() {
fmt.Printf("Hi, my name is %s and I am %d years old.\n", p.Name, p.Age)
}
// 指针接收者方法
func (p *Person) GrowUp() {
p.Age++
}
func main() {
tom := Person{Name: "Tom", Age: 20}
tom.SayHello() // 调用值接收者方法
tom.GrowUp() // 调用指针接收者方法
tom.SayHello()
}