方法

方法 属于 Go

3 个练习

关于 方法

方法是一个函数,它带有一个特殊的接收者实参。接收者出现在它自己的实参列表里,位于func关键字和方法名之间。

func (receiver type) MethodName(parameters) (returnTypes) {

}

只有当接收者的类型与该方法的定义在同一个包里时,你才能为它定义方法。

type Person struct {
	Name string
}

func (p Person) Greetings() string {
	return fmt.Sprintf("Welcome %s!", p.Name)
}

s := Person{Name: "Bronson"}
fmt.Println(s.Greetings())
// Output: Welcome Bronson!

接收者有两种:值接收者和指针接收者。

使用值接收者的方法操作的是传入值的副本,也就是说,在方法内部对接收者所做的任何修改,调用方都看不到。

你可以用指针接收者来声明方法,以便修改接收者指向的值。这样的修改对方法的调用方同样可见。

type rect struct {
	width, height int
}

func (r *rect) squareIt() {
	r.height = r.width
}

r := rect{width: 10, height: 20}
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 20

r.squareIt()
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 10

你可以在这里找到一些示例。也可以看看这篇关于方法的简短教程。

记住:方法不过是一个带有接收者实参的函数。

通过 GitHub 编辑 该链接会在新窗口或标签页中打开

学习 方法

练习已锁定

再解锁 2 个练习即可练习 方法