go - 如何在 GO 中将 interface{} 转换为地图
问题描述
我是 Go 新手,我正在尝试学习如何将 interface{} 转换为 Map。这是我正在尝试实现的示例。
游乐场链接: https: //play.golang.org/p/3jhKlGKO46Z
谢谢您的帮助。
package main
import (
"fmt"
)
func main() {
Map := make(map[string]interface{})
test(Map)
for k,v := range Map {
fmt.Println("key : %v Value : %v", k, v)
}
}
func test(v interface{}) error{
data := make(map[int]interface{})
for i := 0; i < 10; i++ {
data[i] = i * 5
}
for key,val := range data {
// fmt.Println("key : %v Value : %v", key, val)
v[key] = val
}
return nil
解决方案
Go 支持接口的类型断言。它提供了界面中存在的具体值。
您可以使用以下代码实现此目的。
m, ok := v.(map[int]interface{})
if ok {
// use m
_ = m
}
如果断言的值不是给定的类型,ok
将是false
如果你避免第二个返回值,程序会因为错误的断言而恐慌。
我强烈建议您通过https://tour.golang.org
推荐阅读
- r - Optimization problem - minimizing a function in R
- tabulator - 使用 Tabulator 设置最大列宽
- amazon-web-services - 以编程方式激活用户定义的成本分配标签
- javascript - AJAX 调用上的加载程序图像未显示在移动屏幕上,但在桌面屏幕上正常工作
- javascript - Js 对象项不设置为空对象
- python - 我希望从 python 中的单个大数据框生成一系列较小的数据框,同时使用过滤器命名数据框
- c# - 正则表达式问题(在 asp.net MVC5 中)
- sql - 按特定年份对列中的所有 - / + 值求和
- scala - Akka TCP 请求响应需要 Thread.sleep
- mysql - 获取两条记录之间的差异