r.(type) 这里是什么意思
来源:6-4 接口的值类型

hzyhan
2019-12-25
switch v := r.(type) {
case mock.Retriever:
fmt.Println(“Contents:”, v.Contents)
case *real.Retriever:
fmt.Println(“Contents:”, v.UserAgent)
写回答
2回答
-
ZoneTw
2020-03-31
幫補資料: https://tour.golang.org/methods/16
00 -
ccmouse
2019-12-31
就是知道r这个接口变量到底实际上是什么类型。用switch r.(type)来表示。
后面case mock.Retriever表示如果r是一个mock.Retriever,那么就进到这个case分支。此时v的类型是mock.Retriever,所以可以说:v.Contents。另一方面,real.Retriever里面才会有v.UserAgent。
00
相似问题