interface{}转换类型map数组
时间: 2023-07-30 18:12:57 浏览: 79
Golang学习笔记(二):类型、变量、常量
将 `interface{}` 转换为 `map` 数组类型,需要先将 `interface{}` 转换为 `[]interface{}` 类型,然后遍历数组中的每个元素,将其转换为 `map[string]interface{}` 类型。具体实现如下:
```go
var i interface{} = []map[string]interface{}{
{"name": "Alice", "age": 20},
{"name": "Bob", "age": 25},
}
arr, ok := i.([]interface{})
if ok {
for _, v := range arr {
m, ok := v.(map[string]interface{})
if ok {
fmt.Printf("map: %v\n", m)
} else {
fmt.Printf("not a map\n")
}
}
} else {
fmt.Printf("not an array\n")
}
```
在上述示例中,我们将 `interface{}` 变量 `i` 转换为 `[]map[string]interface{}` 类型。首先使用类型断言判断 `i` 是否为 `[]interface{}` 类型,如果是,则遍历数组中的每个元素,将其转换为 `map[string]interface{}` 类型,并输出结果;否则转换失败,输出 "not an array"。
需要注意的是,在使用类型断言之前,需要先判断 `interface{}` 变量是否为 `nil`,否则会发生 panic。
阅读全文