Go的方法
在本教程中,我们将首先了解哪些方法以及它们如何在Go编程语言的范围内工作。然后,我们将看看揭开方法和函数之间的差异,以及何时在Go程序中使用它们。

##一个简单实例 我们将创建一个非常简单的员工管理系统,允许您更新员工姓名并打印出该名称。不是最令人兴奋的示例项目,但它将作为演示还可以。
我们首先创建一个Employee类型的结构,它包含一个字符串字段Name
接下来,我们将声明一个UpdateName()和一个PrintName()方法,它允许我们更新和打印我们创建的员工的姓名。
package main
import (
"fmt"
)
type Employee struct {
Name string
}
func (e *Employee) UpdateName(newName string) {
e.Name = newName
}
func (e *Employee) PrintName() {
fmt.Println(e.Name)
}
func main() {
var employee Employee
employee.Name = "Michael"
employee.UpdateName("Mike")
employee.PrintName()
}
与函数一样,方法会创建传递给它的参数的副本。为避免这种情况,我们可以在定义方法时使用指针接收器func (pointer *Pointer) myMethod()。指针指向内存地址,是传递的引用。多用用就回习惯了,不像C的指针那么恐怖。
为什么我们在Go程序中使用方法呢?
##函数vs方法
方法通常作用于给定的对象,即player.Update(params),这种方式比用UpdatePlayer(player,params)更优雅和直观。
func UpdatePlayer(player *Player, params ParamsStruct) {
fmt.Println("这是个简单的函数")
}
UpdatePlayer(player, params)
上面需要传入player和其它参数,下面的方式更加明了:
func (g *Player) Update(params ParamsStruct) {
fmt.Println("这是个简单的方法")
}
// 在我看来,这样好多了
myPlayer.Update(params)
##小结 在本教程中,我们了解了方法以及它们与函数有何不同。一般我们都是先声明一个结构体,然后给它声明一些方法。和其它语言中的类的概念相似。
最后修改于 2019-07-29