switch 里的type assertion 的值的疑问
来源:6-4 接口的值类型

weibo_隱懓_0
2018-02-21
func test(a interface{}) { switch v := a.(type) { case string: fmt.Println(v, "is string") case int: fmt.Println(v, "is int") } } func main() { test("hello world") test(1) }
如上所示,case 先判断v的类型 ,这时候v的值是string, int. 但是到里面的打印的时候 怎么v又变成了 传递的变量的值。
写回答
2回答
-
v := a.(type)是表示转化为type对象类型的值
case string 表示一个过程 并不是判断条件 经过该过程 尝试是否能转换为string型如果不能则(丢弃错误)进入下一个case 所以这里的v从来都不是 string,int
222018-03-05 -
ZoneTw
2020-03-31
00
相似问题