Go-Interface

SodaCrush · · 339 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go 接口

Interface定义

在golang中,接口是一种抽象类型,接口可理解为一组方法的集合。
跟Struct结构一样,通过type来进行定义

type someInterface interface{
    method1(params) returnValue
    method2(params) returnValue
    …
}

ps:

  • 参数和返回值中的变量名可省略,只写参数类型即可。
  • 一个对象只要实现了接口中的所有方法,那么就实现了这个接口
  • 对于值类型的接口接收者,传入值类型变量,指针类型变量均可

接口嵌套

type someInterface1 interface{
    fmt.Println("interface1")
}

type someInterface2 interface{
    fmt.Println("interface2")
}

type someInterface interface {
    someInterface1
    someInterface2
}

接口的实现分布在多个结构体中

type someInterface interface {
    method1
    method2
}
type FatherObj struct{}

func (FatherObj) method1{
    ...
}

type SubObj struct{
    FatherObj
}

func (SubObj) method2{
    ...
}

// FatherObj 实现 method1, SubObj 通过实现 method2 即实现了 someInterface 
var target someinterface
target = SubObj{}
target.method1()
target.method2()

空接口

由于空接口没有定义任何方法,也就是说任何类型都实现了空接口,对于空接口类型的变量,可以用任意类型给其赋值

type noneInterface interface{}

应用场景:对于某个方法的参数,不关心其具体类型,都做相同的逻辑处理的时候


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:SodaCrush

查看原文:Go-Interface

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

339 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传