简单理解Golang接口/interface - Go语言中文社区

简单理解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
    工厂:接收到一个东西,我看看,是橘子啊。我再去找找我能不能处理。。
    呃。。。找遍了整个小本本,不能!拜拜了您嘞,还给你ㄟ( ▔, ▔ )ㄏ。

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

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/lwqkiss/article/details/100804645
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 19:41:35
  • 阅读 ( 1641 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢