golang 面向对象编程

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()

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值