培训首页  >  web前端新闻  >  兄弟连Go语言培训分享Go语言接口篇

兄弟连Go语言培训分享Go语言接口篇

[2018-08-14 15:40:09] 浏览量:39 来源:

北京兄弟连IT

  Go中,接口interface其实和其他语言的接口意思也没什么区别。interface理解其为一种类型的规范或者约定。一种类型是不是“实现”了一个接口呢?就看这种类型是不是实现了接口中定义的所有方法。

  

  1 接口的定义和使用。

  比如

  1type I interface{

  2    Get() int

  3    Put(int)

  4

  5}

  

  这段话就定义了一个接口,它包含两个函数GetPut

  

   

  

  好了,我的一个接口实现了这个接口:

  1type S struct {val int}

  2func (this *S) Get int {

  3    return this.val

  4}

  5func (this *S)Put(v int) {

  6    this.val = v

  7

  8}

  

  这个结构S就是实现了接口I

  2 空接口

  对于空接口interface{} 其实和泛型的概念很像。任何类型都实现了空接口。

  

  下面举个例子:

  

  一个函数实现这样的功能:

  

  以任何对象作为参数,如果这个对象是实现了接口I,那么就调用接口IGet方法

  

  很多语言都是这样的逻辑:

  1function g(obj){

  2    if (obj is I) {

  3        return (I)obj.Get()

  4    }

  5

  6}

  Go中是这样实现的:

  

  1func g(any interface{}) int {

  2    return any.(I).Get()

  3

  4}

  这里的any.(I)是不是很语义化?“任何实现了I接口的对象”

  

  3 Gointerface的写法:

  下面看几个interface的例子:

  1func SomeFunction(w interface{Write(string)}){

  2    w.Write("pizza")

  3

  4}

  

  这个例子中,直接将interface定义在参数中,很特别…

  

  1func weirdFunc( i int ) interface{} {

  2  if i ==  0 {

  3    return "zero"

  4  }

  5  return i;

  6}

  这里例子中,由于有可能返回string,也有可能返回int,因此将返回值设置成为interface,这个在Gopackage包中会大量见到。


文中图片素材来源网络,如有侵权请联系删除
  • 软件开发
  • 软件测试
  • 数据库
  • Web前端
  • 大数据
  • 人工智能
  • 零基础
  • 有HTML基础
  • 有PHP基础
  • 有C语言基础
  • 有JAVA基础
  • 其他计算机语言基础
  • 周末班
  • 全日制白班
  • 随到随学

网上报名

热门信息