map - 将 map[interface {}]interface {} 转换为 map[string]string

标签 map interface go

从我无法影响的来源获得 map 中的数据,该数据以 map[interface {}]interface {} 的形式到达。

我需要处理包含的数据,最好是 map[string]string (里面的数据非常适合)。

我还需要从数据中生成一个键列表,因为这些是事先不知道的。

我在网上找到的大多数类似问题或多或少都说这是不可能的,但如果我的 map 是 mfmt.Println(m) 会显示数据在那里,可读为 map[k0:v0 K1:v1 k2:v2 ... ]

我该如何做 fmt.Println 能够做的事情?

最佳答案

处理未知接口(interface)的安全方法,只需使用 fmt.Sprintf()

https://play.golang.org/p/gOiyD4KpQGz

package main

import (
    "fmt"
)

func main() {

    mapInterface := make(map[interface{}]interface{})   
    mapString := make(map[string]string)

    mapInterface["k1"] = 1
    mapInterface[3] = "hello"
    mapInterface["world"] = 1.05

    for key, value := range mapInterface {
        strKey := fmt.Sprintf("%v", key)
        strValue := fmt.Sprintf("%v", value)

        mapString[strKey] = strValue
    }

    fmt.Printf("%#v", mapString)
}

关于map - 将 map[interface {}]interface {} 转换为 map[string]string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26975880/

相关文章:

android - 在 map 中显示当前位置时获取经纬度 0.0

javascript - 如何转换 JavaScript hashmap?

c++ - 数据抽象和封装的好处

java - 为 J2ME 应用程序设计 GUI

vb.net - 为什么接口(interface)不是强类型的?

Ajax 将 "Map"对象传递给 Spring MVC Controller

java - 根据其键的子集过滤 map 的元素,而无需遍历整个事物

asynchronous - Go队列处理失败重试

rest - JWT-GO 错误 4 和来自另一个 api url 的 token 验证

pointers - 如何在 go 中获取字符串变量的数据指针?