首页 > 其他分享 >接口(interface)

接口(interface)

时间:2023-02-08 21:11:06浏览次数:55  
标签:struct fmt 接口 going func interface type

接口是一种类型

接口用来处理什么问题?

比如一个网上上传可能使用支付宝,微信,银联等方式去在线支付,我们能不能吧它们当成“支付方式”来处理呢?

比如三角形,四边形,圆形都能计算周长和面积,我们能不能把它们当作"图形"来处理呢?

比如销售,行政,程序员都能计算月薪,我们能不能把他们当成"员工"来处理呢?

go语言为了解决类似上面的问题,就设计了接口这个概念,接口区别我们之前所有的具体类型,接口是一种抽象的类型。当你看到了一个接口类型时,你不知道它是什么,唯一直到的是通过它的方法能做什么。

接口的定义

type 接口名称 interface{
  方法名称
}

package main

import "fmt"

type dog struct{}

type person struct {
}
type cat struct{}

type specker interface {
  speck() //实习了speak方法的变量都是specker类型
}

func (d dog) speck() {
  fmt.Println("汪汪汪")
}

func (c cat) speck() {
  fmt.Println("喵喵喵")
}

func (p person) speck() {
  fmt.Println("呜呜呜")
}

func da(x specker) {
  //接受一个参数,传进来什么,我就打什么
  x.speck() //挨打了就要叫
}

func main() {
  p1 := person{}
  d1 := dog{}
  c1 := cat{}
  da(p1)
  da(d1)
  da(c1)
}

例2

package main

import "fmt"

// 车的接口

// 不管是什么牌子的车都能跑

type going interface {
  going() //这里要和下面的方法名一致
}

type baoma struct{}

type tesila struct{}

type hongqi struct{}

func (b baoma) going() {
  fmt.Println("宝马开起来了!")
}

func (t tesila) going() {
  fmt.Println("特斯拉开起来了!")
}

func (h hongqi) going() {
  fmt.Println("红旗开起来了!")
}

func drive(car going) { //这个就是调用方法类型的函数
  car.going()
}

func main() {
  b1 := baoma{}
  t1 := tesila{}
  h1 := hongqi{}
  drive(b1)
  drive(t1)
  drive(h1)
}

标签:struct,fmt,接口,going,func,interface,type
From: https://www.cnblogs.com/suknna/p/17103309.html

相关文章

  • 关于接口测试的总结与思考
    引言为什么要做接口自动化测试?在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归。但接口自动化测试因其实现简单、维护成......
  • 接口自动化测试,一看就会
    目录接口自动化测试用例设计Excel接口测试用例访问MySQL接口测试用例访问PyTest测试框架接口自动化测试必备技能-HTTP协议request库实现接口请求引言与UI相比,接......
  • 【Linux】搭建Yapi接口管理工具
    在年前员工访谈时发现,前后端协作开发会出现一定的内耗现象,在当前前后端分离的情况下前端往往会因为后端接口存在问题影响对接速度,在接口设计不明确的情况下还需要反复确认和......
  • 基于View接口
    目录基于View接口1.写模型表以及数据库迁移3.使用CBV写查询所有的视图接口4.配路由基于View接口​ Django原生即继承View来实现写接口,的确过程很繁杂,很多东西都是手动写,......
  • Go 工程化 - 使用 expvar 监控接口状态
    expvar 包为程序中的公共变量提供了一个标准化的接口,如服务中的访问计数器。包提供了HTTP接口并以JSON格式输出这些变量,接口的URL路由是 /debug/vars 。最重要的......
  • 旺店通·企业奇门和用友BIP单据接口对接
    旺店通·企业奇门和用友BIP单据接口对接来源系统:用友BIPYonBIP用友商业创新平台,是用友在数字经济时代面向成长型、大型企业及巨型企业,融合了先进且高可用技术平台和公......
  • 金蝶云星空和钉钉单据接口对接
    金蝶云星空和钉钉单据接口对接来源系统:钉钉钉钉(DingTalk)是阿里巴巴集团打造的企业级智能移动办公平台,是数字经济时代的企业组织协同办公和应用开发平台。钉钉将IM即时......
  • 金蝶云星空和旺店通·企业奇门接口打通对接实战
    金蝶云星空和旺店通·企业奇门接口打通对接实战源系统:金蝶云星空金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会计准......
  • HamsterBear Linux 开启GPIO子系统sysfs接口开启
    HamsterBearLinux开启GPIO子系统sysfs接口内核配置Generalsetup中打开内核feature或者直接搜索CONFIG_EXPERT开启gpio子系统sysfs接口Devicedrivers->......
  • 关于webpack 开启代理proxy后,接口看不到代理地址的问题。
    今天在项目中发现,  明明在proxy里代理了 接口地址确不是10.10.11.106/front/xxxxxx。这是为啥呢?changeOrigin的修改也是一样,在网络请求中发现host还是没改。这又......