接口(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)
}

posted @   suknna  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示