golang中接口查询
什么是接口查询接口查询,就是在一个接口变量中,去判断,那个把值赋给接口变量的对象,究竟有没有实现另一个接口,这个所谓的另一个接口,就是我要查询的那个接口。在这个已知的接口变量中,查询另一个接口的过程,就是接口查询了。 接口查询作用通过接口查询,我们可以操作这个还原赋值给这个接口变量的对象的更加全面的功能。如赋值给这个接口变量的对象,实现了很多个接口,当他把值赋给这个接口后,那么这个接口变量就只能操作这个接口定义的方法了,相当于这个对象的一些功能就丢失了。通过接口查询,我们来充分的挖掘这个对象的更多功能 接口查询代码实操package main
import (
"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方法。 val,ok := w.(RW) 如果能查询到ok为true,否则为false。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |