if t,ok := v.(string) if t,ok := v.([]string) 是什么语法啊,显式指定v的类型吗?
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
interface{}类型转换而已
类型断言
@taatcc 这是类型断言, if t,ok := v.(string),如果v是string类型的话,ok就是true,t就是string类型v的值;否则ok为false,t就是string类型的初始化
哦,谢谢各位,这语相当于是判断和赋给的结合 ,简洁是简洁,就是不明了
good
一百不应该用这个,switch是更有的代码方案
这个,有没有代码可以参考以下,学习学习。
#6楼 @liangmanlin 这个,有没有代码可以参考以下,学习学习。
switch v.(type) {}
package main import "fmt" type Student struct { name string id int } func main() { i := make([]interface{}, 3) i[0] = 1 //int i[1] = "hello go" //string i[2] = Student{"mike", 666} //Student //类型查询,类型断言 for index, data := range i { switch value := data.(type) { case int: fmt.Printf("x[%d] 类型为int, 内容为%d\n", index, value) case string: fmt.Printf("x[%d] 类型为string, 内容为%s\n", index, value) case Student: fmt.Printf("x[%d] 类型为Student, 内容为name = %s, id = %d\n", index, value.name, value.id) } } }
#7楼 @lilianwen ```go package main import "fmt" type Student struct { name string id int } func main() { i := make([]interface{}, 3) i[0] = 1 //int i[1] = "hello go" //string i[2] = Student{"mike", 666} //Student //类型查询,类型断言 for index, data := range i { switch value := data.(type) { case int: fmt.Printf("x[%d] 类型为int, 内容为%d\n", index, value) case string: fmt.Printf("x[%d] 类型为string, 内容为%s\n", index, value) case Student: fmt.Printf("x[%d] 类型为Student, 内容为name = %s, id = %d\n", index, value.name, value.id) } } } ```
谢谢大佬,学习了,受益匪浅!
学习了。
`单行代码`
interface{}类型转换而已
类型断言
@taatcc 这是类型断言, if t,ok := v.(string),如果v是string类型的话,ok就是true,t就是string类型v的值;否则ok为false,t就是string类型的初始化
哦,谢谢各位,这语相当于是判断和赋给的结合 ,简洁是简洁,就是不明了
good
一百不应该用这个,switch是更有的代码方案
这个,有没有代码可以参考以下,学习学习。
switch v.(type) {}
谢谢大佬,学习了,受益匪浅!
学习了。