Go 面向对象编程简介
本课属于 Coddy GO 学习旅程的“面向对象编程”单元。第 5 课,共 107 课。
Go 没有类,但它通过结构体和方法实现面向对象编程。结构体将相关数据组合在一起,方法则定义与该结构体关联的行为。
定义一个结构体来存储数据
type Dog struct {
Name string
Age int
}将方法附加到结构体
func (d Dog) Bark() string {
return d.Name + " says Woof!"
}创建一个实例并使用它
package main
import "fmt"
type Dog struct {
Name string
Age int
}
func (d Dog) Bark() string {
return d.Name + " says Woof!"
}
func main() {
myDog := Dog{Name: "Buddy", Age: 3}
fmt.Println(myDog.Bark()) // 输出:Buddy says Woof!
fmt.Println(myDog.Age) // 输出:3
}在 Go 中,方法名前面的 (d Dog) 部分称为接收者。它将方法与 Dog 结构体关联起来,类似于在其他语言中方法属于类的方式。
挑战
简单创建一个 Cat 结构体,练习 Go 实现 OOP 的方式:
- 定义一个
Cat结构体,包含Name(string)和Age(int)字段 - 添加一个
Speak方法,返回猫的名字,后面跟着" says Meow!"
亲手试试
package main
import "fmt"
func main() {
var name string
var age int
fmt.Scan(&name, &age)
cat := Cat{Name: name, Age: age}
fmt.Printf("Name: %s\n", cat.Name)
fmt.Printf("Age: %d\n", cat.Age)
fmt.Println(cat.Speak())
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: Go 在线编译器