6.7. 第5节:接口

未匹配的标注
本文档最新版为 2023,旧版本可能放弃维护,推荐阅读最新版!

1. 什么是接口

接口就是一种规范与标准,在生活中经常见接口,例如:笔记本电脑的USB接口,可以将任何厂商生产的鼠标与键盘,与电脑进行链接。为什么呢?原因就是,USB接口将规范和标准制定好后,各个生产厂商可以按照该标准生产鼠标和键盘就可以了。

在程序开发中,接口只是规定了要做哪些事情,干什么。具体怎么做,接口是不管的。这和生活中接口的案例也很相似,例如:USB接口,只是规定了标准,但是不关心具体鼠标与键盘是怎样按照标准生产的.

在企业开发中,如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口告诉开发人员你需要实现那些功能。

2. 接口定义

接口定义的语法如下:

第5节:接口

怎样具体实现接口中定义的方法呢?

第5节:接口

具体的调用如下:

第5节:接口

只要类(结构体)实现对应的接口,那么根据该类创建的对象,可以赋值给对应的接口类型。

接口的命名习惯以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()
}

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇