老师您好,关于接口值类型一节
来源: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回答
这就是根据r的类型,来选择相应的分支。
case mock.Retriever:
这个分支下,r实际上是mock.Retriever类型,但是r我们已经说它是Retriever类型了。所以这里v的类型才是mock.Retriever。所以可以v.Content。不过仅限于这个分支之内。
相似问题