Go --接口类型

一、接口1、接口类型2、为什么要使用接口一、接口接口是一种类型接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。1、接口类型在Go语言中接口(interface)是一种类型,一种抽象的类型。interface 是一组 method 的集合,是 duck-type programming 的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。2、为.
摘要由CSDN通过智能技术生成

一、接口

  • 接口是一种类型(用type关键字来定义)
  • 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。
  • 接口限制了结构体必须实现的方法

1、接口类型

  • 在Go语言中接口(interface)是一种类型,一种抽象的类型。
  • interface 是一组 method 的集合,是 duck-type programming 的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。

2、为什么要使用接口

type Cat struct{
   }

func (c Cat) Say() string {
    return "喵喵喵" }

type Dog struct{
   }

func (d Dog) Say() string {
    return "汪汪汪" }

func main() {
   
	c := Cat{
   }
	fmt.Println("猫:", c.Say())
	d := Dog{
   }
	fmt.Println("狗:", d.Say())
}

3、接口的定义

  • Go语言提倡面向接口编程。
  • 接口定义格式:
type 接口名 interface{
   
	方法1(参数1,参数2···)(返回值1,返回值2···)
	方法2(参数1,参数2···)(返回值1,返回值2···)
	····
	}
	
# 接口名:使用type将接口定义为自定义的类型名。Go语言的接口在命名时,一般会在单词后面添加er,如有写操作的接口叫Writer,有字符串功能的接口叫Stringer等。接口名最好要能突出该接口的类型含义。
# 方法名:当方法名首字母是大写且这个接口类型名首字母也是大写时,这个方法可以被接口所在的包(package)之外的代码访问。
# 参数列表、返回值列表:参数列表和返回值列表中的参数变量名可以省略。

示例:Write方法的接口名,我们通常可以定义为Writer

type writer interface{
   
    Write([]byte) error
}

4、实现接口的条件

  • 一个变量如果实现了接口中规定的所有方法,那么这个变量就实现了这个接口,可以称为这个接口类型的变量(即调用这个变量,可以定义为接口类型)
  • 要想实现接口,一定要满足接口中所有的方法并且要满足定义的方法格式

示例:

type spake interface {
   
	spake()
}

// 定义的 hit 函数
func hit(animal spake) {
   
	animal.spake()
}

// 定义一个dog结构体
type dog struct {
   
	name string
}
// 定义一个cat结构体
type cat struct {
   
	name string
}
// dog实现了spake接口
func (d dog) spake() {
   
	fmt.Printf("%s 汪汪汪~\n", d.name)
}
// cat实现了spake接口
func (c cat) spake() {
   
	fmt.Printf("%s 喵喵喵~\n", c.name)
}

func main() {
   
	var d1 dog
	var c1 cat
  
	var s1 spake
	s1 = d1       // 可以将满足接口中所有方法的结构体实例赋值给接口类型的变量
	hit(s1)
	var s2 spake
	s2 = c1
	hit(s2)
}

示例2:

type animal interface {
   
	move()
	eat(string)
}
type cat 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值