简单理解Golang接口/interface

可能有一些工厂模式的影子。

先来说一说接口是什么,
接口是方法声明的集合。任何类型的对象实现了在interface 接口中声明的全部方法,则表明该类型实现了该接口。
怎么理解呢?
接口里面就是未实现的方法,就是 方法名(参数列表)返回值类型这种形式。
下一句可以这么理解,golang中的方法必须要有对象接收。

//结构体
type Cow struct {
	Name string
}
//奶牛的处理方法
func (cow Cow) Method1()  {  //这就是方法,没有写参数和返回值是为了方便理解
	fmt.Printf("%s:挤奶\n",cow.Name)
}
type Factory interface {
	//方法1,2,3
	Method1()
	Method2()
	Method2()
}
//现在接口中有三个方法,所以必须写三个接收对象为Cow的方法
func (cow Cow) Method1()  { 
	
}
func (cow Cow) Method2()  {  
	
}
func (cow Cow) Method3()  {  
	
}

像这样,Cow也有了三个方法且与接口中的方法完全相同,Cow就实现了这个接口。

下面就开说一下怎么使用接口

package main

import "fmt"

type Factory interface {
	//处理方法1
	Method1()

}
//奶牛
type Cow struct {
	Name string
}
//苹果
type Apple struct {
	Name string
}
//奶牛的处理方法,实现接口
func (cow Cow) Method1()  {
	fmt.Printf("%s:挤奶\n",cow.Name)
}

//苹果的处理方法,实现接口
func (a Apple) Method1()  {
	fmt.Printf("%s:切块\n",a.Name)
}

func main()  {
	var fa Factory
	cow := Cow{"奶牛"}
	fa = cow
	fa.Method1()

	apple := Apple{"苹果"}
	fa = apple
	fa.Method1()
}

运行结果
在这里插入图片描述
将main函数单独分析

func main()  {
	var fa Factory
	cow := Cow{"奶牛"}
	fa = cow
	fa.Method1()

	apple := Apple{"苹果"}
	fa = apple
	fa.Method1()
}

我觉得重点在这一句fa = cow,为什么要把结构体赋值给接口。
可以这样理解,接口Factory就是一个工厂,赋值给接口就相当于向工厂里运送原料。比如说,把奶牛给工厂,工厂处理奶牛,怎么处理呢?
大致这样

  1. 情景一
    工厂:接收到一个东西,是什么呢?哦,奶牛啊。我去找找我能不能处理。。。
    诶,在这,我的小本本上记了怎么处理它,我先去忙了~

  2. 情景2
    工厂:接收到一个东西,我看看,是橘子啊。我再去找找我能不能处理。。
    呃。。。找遍了整个小本本,不能!拜拜了您嘞,还给你ㄟ( ▔, ▔ )ㄏ。

总的来说就这些啦(●ˇ∀ˇ●),有什么错误欢迎提出。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值