老师您好,关于接口值类型一节

来源:1-4 接口的值类型

寻曜

2021-04-26 16:53:27

switch v := r.(type) {
case mock.Retriever:
fmt.Println("content:", v.Content)
case *real.Retriever:
fmt.Println("UserAgent:", v.UserAgent)
}

这个switch里面的v:=r.(type)是什么意思呢...为什么后面可以直接v.Content这样使用

写回答

1回答

ccmouse

2021-04-27

这就是根据r的类型,来选择相应的分支。


​case mock.Retriever:

这个分支下,r实际上是mock.Retriever类型,但是r我们已经说它是Retriever类型了。所以这里v的类型才是mock.Retriever。所以可以v.Content。不过仅限于这个分支之内。

0

0 学习 · 1399 问题

查看课程