赞
踩
一个接口A里写了另一个接口B, 代表的是接口的组合。在面向对象语义里,类似接口A同时继承了接口B和接口C.
下面写一个小栗子,车能地上跑,船能水上游,而水陆两栖作战车可以同时做到,还有作战能力。vn18型作战车是一种水陆两栖作战车。
使用接口组合逻辑,车是一个接口,船是一个接口,水陆两栖作战车有车和船的接口方法,同时定义了开火接口。
vn18作战车只需要实现水陆两栖作战车接口即可获得所有能力。
import "fmt" // Vehicle 车辆 type Vehicle interface { run() } // Boat 船 type Boat interface { swim() } // Amphibious 水陆两栖 type Amphibious interface { Vehicle Boat fire() } // VN18AmphibiousVehicle vn18型步兵水陆两栖战车 type VN18AmphibiousVehicle struct { FireRating int // 射速 Calibre int // 口径 } func (v VN18AmphibiousVehicle) fire() { fmt.Println("AmphibiousVehicle fire: ",v.FireRating,"/",v.Calibre) } func (v VN18AmphibiousVehicle) run(){ fmt.Println("AmphibiousVehicle fire") } func (v VN18AmphibiousVehicle) swim() { fmt.Println("AmphibiousVehicle swim") } func main() { c:=&VN18AmphibiousVehicle{ FireRating: 1, Calibre: 2, } c.fire() c.run() c.swim() }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。