在类型开关中,如果您希望访问强制转换为适当类型的变量,则只需使用类似的命令,
switchx := v.(type)并且在每种情况下,开关
x将具有适当的值。规范中有一个例子。您甚至可以这样做,
switch v :=v.(type)并且在switch语句中将有v的阴影版本。
例如:
switch x := v.(type) {case []interface{}: fmt.Printf("got %Tn", x) for i, e := range x { fmt.Println(i, e) }default: fmt.Printf("I don't know how to handle %Tn", v)}
playground
还要注意,
fmt.Printf当您只想打印变量的类型时,可以只使用“%T” 代替(直接)使用reflect包。
最后,请注意,如果您有多个非默认子句,则需要使用类型开关,但是,例如在您的示例中,如果您确实只对一种类型感兴趣,则应该执行以下 *** 作:
if x, ok := v.([]interface{}); ok { fmt.Printf("got %Tn", x) for i, e := range x { fmt.Println(i, e) }} else { fmt.Printf("I don't know how to handle %Tn", v)}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)