golang中接口查询

golang中接口查询,第1张

概述什么是接口查询 接口查询,就是在一个接口变量中,去判断,那个把值赋给接口变量的对象,究竟有没有实现另一个接口,这个所谓的另一个接口,就是我要查询的那个接口。在这个已知的接口变量中,查询另一个接口的过程,就是接口查询了。 接口查询作用 通过接口查询,我们可以 *** 作这个还原赋值给这个接口变量的对象的更加全面的功能。如赋值给这个接口变量的对象,实现了很多个接口,当他把值赋给这个接口后,那么这个接口变量就只 什么是接口查询

接口查询,就是在一个接口变量中,去判断,那个把值赋给接口变量的对象,究竟有没有实现另一个接口,这个所谓的另一个接口,就是我要查询的那个接口。在这个已知的接口变量中,查询另一个接口的过程,就是接口查询了。

接口查询作用

通过接口查询,我们可以 *** 作这个还原赋值给这个接口变量的对象的更加全面的功能。如赋值给这个接口变量的对象,实现了很多个接口,当他把值赋给这个接口后,那么这个接口变量就只能 *** 作这个接口定义的方法了,相当于这个对象的一些功能就丢失了。通过接口查询,我们来充分的挖掘这个对象的更多功能

接口查询代码实 ***
package mainimport (    "fmt")type R interface {    Read()}type W interface {    Write(name string)}type RW interface {    R    W}type log struct {    name []string    r    int}func (t *log) Read() {    if len(t.name) > t.r {        fmt.Println(t.name[t.r])        t.r++    } else {        fmt.Println("empty")    }}func (t *log) Write(name string) {    t.name = append(t.name,name)    fmt.Println("wirte success.",t.name)}func main() {    var r R = &log{}    var w W = &log{}    w.Write("write first")    w.Write("write second")    r.Read()    r.Read()    val,ok := w.(RW)    if !ok {        fmt.Println("hi")    } else {        val.Read()        val.Read()    }}

上边代码中的R接口,定义了Read方法,W接口,定义了Write方法。RW接口通过组合R与W,相当于定义了Read方法与Write方法。
log类实现了上边的3个接口。在实例化log过程中,分别将值赋给R接口和W接口。那么问题就来了,R接口变量,只能访问Read方法,W接口变量,只能访问Write方法,也就是一个只能写进去,读不出来,一个只能读,但是没写入方法,读出来自然就是空值了。
下边通过接口查询,来充分发挥log对象的功能。
在W接口变量中,查询赋值给他的log对象,是否实现了RW接口,如果实现了,则返回一个RW接口变量,查询的语法也非常简单,如下所示:

val,ok := w.(RW)

如果能查询到ok为true,否则为false。

总结

以上是内存溢出为你收集整理的golang中接口查询全部内容,希望文章能够帮你解决golang中接口查询所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1279870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存