package main
import "fmt"
/*
1.为出租车编写一个接口。您可在其中包含任何方法,但需要考虑一些因素,如出租车是否是空的、有多少位乘客以及出租车是否停运了。
2.扩展接口Robot,在其中添加方法Talk。再修改程序清单8.6,让结构体T850和R2D2都实现方法talk。
3.阅读errors包的源代码,您明白了方法是如何与结构体相关联的吗?
*/
type Taxi interface {
IsEmpty() bool
CountPeopleNum() int
IsRest() bool
GetOffPeople(name string)
}
type People struct {
Name string
}
type Didi struct {
Peoples []People
//CurrentTime time.Time
}
func (t *Didi) IsEmpty() bool {
if len(t.Peoples) == 0 {
fmt.Println("目前车是空的")
return true
}
fmt.Println("目前车车上有人")
return false
}
func (t *Didi) CountPeopleNum() int {
number := len(t.Peoples)
fmt.Println("车上有", number, "人")
return number
}
func (t *Didi) IsRest() bool {
fmt.Println("目前出租车没有停运")
return false
}
func (t *Didi) GetOffPeople(name string) {
peoples := []People{}
for _, v := range t.Peoples {
if v.Name != name {
peoples = append(peoples, v)
}
}
t.Peoples = peoples
}
func main() {
xiaoming := People{
Name: "xiaoming",
}
xiaohong := People{
Name: "xiaohong",
}
xiaohuang := People{
Name: "xiaohuang",
}
didi := &Didi{}
didi.Peoples = append(didi.Peoples, xiaoming)
didi.Peoples = append(didi.Peoples, xiaohong)
didi.Peoples = append(didi.Peoples, xiaohuang)
didi.IsEmpty()
didi.CountPeopleNum()
didi.IsRest()
didi.GetOffPeople("xiaoming")
didi.GetOffPeople("xiaohong")
didi.IsEmpty()
didi.CountPeopleNum()
didi.IsRest()
didi.GetOffPeople("xiaohuang")
didi.IsEmpty()
didi.CountPeopleNum()
didi.IsRest()
}
golang 面向对象编程
于 2022-08-18 16:38:51 首次发布