go语言接口详解(go语言interface接口)

go语言接口概述

在go语言中,接口(interface)是一种值(value)的抽象表达,是一个方法的集合,这些方法只有声明而没有实现。接口内定义的方法全部是方法声明,不包含实现。go语言的接口与其他语言(Java、C#)的接口相似,但又不完全一样。go中的 接口就是一个协议,一个规范,规定了实现这个接口的类型必须实现的一些方法,采用接口的方式可以让代码更加灵活,也更具有可扩展性。

go语言接口的定义和实现

go语言中的接口定义比较简单,只需要使用type即可定义。接口的定义形如:type 接口类型名 interface{ 方法名1(参数1类型,参数2类型,...) 返回值类型 方法名2(参数1类型,参数2类型,...) 返回值类型 } 注意这里只有方法名和签名定义,方法的实现在实现这个接口的类型中完成。例如下面的代码定义了一个接口Phone,包括一个Call()函数。

type Phone interface {
    Call()
}

接口的实现:定义一个类型Person,它有一个name属性和call()方法,call()方法实现了(实现了Phone接口):

type Person struct {
    name string
}
func (p Person) Call() {
    fmt.Println(p.name, "is calling")
}

这里我们只需要让Person的call()方法实现了Phone接口中的Call()方法。具体的实现方法是:保证Person类型实在Phone接口的策略集内实现,即实现,Person实现了接口Phone。这样,Person类型就可以当做Phone类型使用

go语言接口和对象

对于go语言的接口和对象,需要从三个方面来看待:

1. 接口和对象的关系:go的接口是一种类型,而对象则是类型的实例,也就是说,接口和对象是相关的。在实际的实现过程中,要用对应对象的指针来实现接口的方法,其实也就是满足类型的相关属性,这才是真正的实现。

2. 接口的多态: 由于go的接口并没有具体实现,所以可以将一个对象赋值给多个接口(前提是这些接口对象由相同或更多的方法组合),每一个接口持有对象的指针和方法,调用接口方法就是调用持有的指针所指向的对象方法。

3. 空接口interface{}:这个接口表示了所有类型都实现了它的方法,是接口中最基本的一种类型,也是最常用的。因为当我们定义一个没有泛型的API时,我们需要用到它来表示可以接受各种类型参数。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/golang-32.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年5月2日 上午3:45
下一篇 2023年5月2日 上午3:45

猜你喜欢