6.7. 第5节:接口
1. 什么是接口
接口就是一种规范与标准,在生活中经常见接口,例如:笔记本电脑的USB接口,可以将任何厂商生产的鼠标与键盘,与电脑进行链接。为什么呢?原因就是,USB接口将规范和标准制定好后,各个生产厂商可以按照该标准生产鼠标和键盘就可以了。
在程序开发中,接口只是规定了要做哪些事情,干什么。具体怎么做,接口是不管的。这和生活中接口的案例也很相似,例如:USB接口,只是规定了标准,但是不关心具体鼠标与键盘是怎样按照标准生产的.
在企业开发中,如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口告诉开发人员你需要实现那些功能。
2. 接口定义
接口定义的语法如下:
怎样具体实现接口中定义的方法呢?
具体的调用如下:
只要类(结构体)实现对应的接口,那么根据该类创建的对象,可以赋值给对应的接口类型。
接口的命名习惯以er结尾。
package main
import "fmt"
type person struct {
name string
sex string
age int
}
type student struct {
person
score int
}
type teacher struct {
person
subject string
}
func (s *student)SayHello(){
fmt.Printf("大家好,我是%s,我是%s生,我今年%d岁了,我的成绩是%d分\n",s.name,s.sex,s.age,s.score)
}
func (t *teacher)SayHello(){
fmt.Printf("大家好,我是%s,我是%s生,我今年%d岁了,我叫的学科是%s\n",t.name,t.sex,t.age,t.subject)
}
//1
//接口定义
//接口定义了规则 方法实现了规则
//接口是虚的 方法是实的
//格式 type 接口名 interface{方法列表}
//方法名(参数列表)(返回值列表)
type Humaner interface {
//2
//方法 函数声明 没有具体实现 具体的实现要根据对象不同 实现方式也不同
//接口中的方法必须有具体的实现
SayHello()
}
func main() {
var stu student=student{person{"小明","男",18},100}
var tea teacher=teacher{person{"法师","女",31},"盗墓"}
//3
//定义接口类型
//接口做了同一的处理 先实现接口 在根据接口实现对应的方法
//在需求改变时 不需要改变接口 只需要修改方法
var h Humaner
//fmt.Println(h.SayHello)
h=&stu
h.SayHello()
fmt.Printf("%p\n",h)
h=&tea
h.SayHello()
fmt.Printf("%p\n",h)
//stu.SayHello()
//tea.SayHello()
}
推荐文章: