GO语言类型查询类型断言示例解析
目录
类型查询1.comma-ok断言2. switch测试类型断言类型查询
我们知道interface的变量里面可以存储任意类型的数值(该类型实现了interface)。那么我们怎么反向知道这个变量里面实际保存了的是哪个类型的对象呢?目前常用的有两种方法:
comma-ok断言switch测试1.comma-ok断言
Go语言里面有一个语法,可以直接判断是否是该类型的变量: value, ok = element.(T),这里value就是变量的值,ok是一个bool类型,element是interface变量,T是断言的类型。
如果element里面确实存储了T类型的数值,那么ok返回true,否则返回false。
var i []interface{} i = append(i, 10, 3.14, "aaa", demo15) for _, v := range i { if data, ok := v.(int); ok { fmt.Println("整型数据:", data) } else if data, ok := v.(float64); ok { fmt.Println("浮点型数据:", data) } else if data, ok := v.(string); ok { fmt.Println("字符串数据:", data) } else if data, ok := v.(func()); ok { //函数调用 data() } }
2. switch测试
var i []interface{} i = append(i, 10, 3.14, "aaa", demo15) for _,data := range i{ switch value:=data.(type) { case int: fmt.Println("整型",value) case float64: fmt.Println("浮点型",value) case string: fmt.Println("字符串",value) case func(): fmt.Println("函数",value) } }
类型断言
if判断
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 //类型查询,类型断言 //第一个返回下标,第二个返回下标对应的值, data分别是i[0], i[1], i[2] for index, data := range i { //第一个返回的是值,第二个返回判断结果的真假 if value, ok := data.(int); ok == true { fmt.Printf("x[%d] 类型为int, 内容为%d\n", index, value) } else if value, ok := data.(string); ok == true { fmt.Printf("x[%d] 类型为string, 内容为%s\n", index, value) } else if value, ok := data.(Student); ok == true { fmt.Printf("x[%d] 类型为Student, 内容为name = %s, id = %d\n", index, value.name, value.id) } } }
Switch判断
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) } } }
以上就是GO语言类型查询类型断言示例解析的详细内容,更多关于GO类型查询类型断言 的资料请关注脚本之家其它相关文章!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?