接口(interface)
接口是一种类型
接口用来处理什么问题?
比如一个网上上传可能使用支付宝,微信,银联等方式去在线支付,我们能不能吧它们当成“支付方式”来处理呢?
比如三角形,四边形,圆形都能计算周长和面积,我们能不能把它们当作"图形"来处理呢?
比如销售,行政,程序员都能计算月薪,我们能不能把他们当成"员工"来处理呢?
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)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)