interface{}转换类型为map
时间: 2024-03-06 12:50:54 浏览: 64
将 `interface{}` 转换为 `map` 类型,可以使用类型断言和类型转换的组合。具体实现如下:
```go
var i interface{} = map[string]int{"a": 1, "b": 2}
m, ok := i.(map[string]int)
if ok {
fmt.Printf("i is a map: %v\n", m)
} else {
fmt.Printf("i is not a map\n")
}
```
在上述示例中,我们将 `interface{}` 变量 `i` 转换为 `map[string]int` 类型。首先使用类型断言判断 `i` 是否为 `map[string]int` 类型,如果是,则转换成功,`m` 的值为转换后的 `map`;否则转换失败,`m` 的值为 `nil`,并且输出 "i is not a map"。
需要注意的是,如果 `interface{}` 变量中存储的是一个 `map` 类型的指针,那么在转换时需要使用 `*` 操作符,如下所示:
```go
var i interface{} = &map[string]int{"a": 1, "b": 2}
m, ok := (*i).(map[string]int)
if ok {
fmt.Printf("i is a map: %v\n", m)
} else {
fmt.Printf("i is not a map\n")
}
```
在上述示例中,需要使用 `*` 操作符将 `i` 转换为 `*map[string]int` 类型,然后再将其转换为 `map[string]int` 类型。
阅读全文