(三十四)golang--接口
golang的多态特性主要体现在接口上; 主要优势:高内聚低耦合; package main import ( "fmt" ) type usb interface { start() stop() } type phone struct { } func (p phone) start() { fmt.Println(手机开始工作) } func (p phone) stop() { fmt.Println(手机停止工作) } type camera struct { } func (c camera) start() { fmt.Println(相机开始工作) } func (c camera) stop() { fmt.Println(相机停止工作) } type computer struct { } func (co computer) working(usb usb) { usb.start() usb.stop() } func main() { computer := computer{} phone := phone{} camera := camera{} computer.working(phone) computer.working(camera) } 接口的注意事项:
接口的经典实例:实现对hero结构体切片进行排序; golang中在sort包里面有一个Sort函数,可以定制自己的排序操作,只不过所传入的变量需要实现三个接口方法:Len、Less、Swap。其中Len()用于计算变量的长度,Less()指定对哪个字段进行排序,且按升序还是降序排序,Swap()用于交换两个变量的值。 ? 接口和继承之间的关系? 接口是对继承的一种补充。通过接口,可以在不破坏原有父类属性和方法的基础上,给子类添加新的功能,同时这所有的功能也都可以继续被下一级所继承。 ? ?让我们捋一捋之间的关系:
在将一个例子,比如说有下面的关系: ? ?我们想让足球运动员和大学生学英语: (1)将英语写到运动员中,但是篮球运动员也能学英语了; (2)将英语写到学生中,但是中学生也能学英语; (3)将英语各自写到足球运动员和大学生中,有可能导致学英语的方法不一样; (4)定义一个学英语的接口,让足球运动员和大学生实现,具有一定的规范性; 继承和接口的解决问题不同: 接口:设计,设计好各种规范,让其他自定义类型去实现这些方法;接口更加灵活;在一定程度上实现代码解耦; ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |