接口是一种类型
接口用来处理什么问题?
比如一个网上上传可能使用支付宝,微信,银联等方式去在线支付,我们能不能吧它们当成“支付方式”来处理呢?
比如三角形,四边形,圆形都能计算周长和面积,我们能不能把它们当作"图形"来处理呢?
比如销售,行政,程序员都能计算月薪,我们能不能把他们当成"员工"来处理呢?
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