导入
简介
本课通过一个示例讲解 Go 语言中方法和接口的工作原理。
Go 中的方法
尽管从技术上讲,Go 并不是一种面向对象编程语言,但通过类型和方法,Go 支持以面向对象的方式进行编程。主要区别在于,Go 不支持类型继承(即一个类获取另一个类的特性与行为的机制),而是引入了接口的概念。
在本课中,我们将重点介绍 Go 中方法的使用。
注意:一个常见的问题是“函数和方法有什么区别?” 方法是一种带有接收者(receiver)的函数。在面向对象术语中,方法是作用于对象实例上的函数。
Go 没有类的概念,但你可以在结构体类型上定义方法。
方法接收者位于 func 关键字和方法名之间的独立参数列表中。以下是一个示例,定义了一个名为 User 的结构体,包含两个字符串类型的字段:FirstName 和 LastName。
示例
1package main 2 3import ( 4 "fmt" 5) 6 7type User struct { 8 FirstName, LastName string 9} 10 11func (u User) Greeting() string { 12 return fmt.Sprintf("Dear %s %s", u.FirstName, u.LastName) 13} 14 15func main() { 16 u := User{"Matt", "Aimonetti"} 17 fmt.Println(u.Greeting()) 18}
请注意,方法是在结构体外部定义的。如果你长期编写面向对象代码,一开始可能会觉得这种方式有些奇怪。实际上,User 类型的方法可以定义在包内的任意位置。
现在我们已经了解了 Go 中方法和接口的工作方式,在接下来的课程中,我们将探讨如何组织代码结构。