从某个来源我无法影响我在地图中获得数据,该数据以map[interface {}]interface {}
的形式到达。
我需要处理包含的数据,最好是map[string]string
(其中的数据非常适合)。
我还需要从数据中生成一个键列表,因为这些键事先是未知的。
我在网上可以找到的大多数类似问题或多或少地说这是不可能的,但如果我的地图是m
,则fmt.Println(m)
会显示数据存在,可读为{{1} }。
我怎样才能做fmt.Println能做的事情?
答案 0 :(得分:14)
也许我误解了这个问题,但这会有效吗?
m := make(map[interface{}]interface{})
m["foo"] = "bar"
m2 := make(map[string]string)
for key, value := range m {
switch key := key.(type) {
case string:
switch value := value.(type) {
case string:
m2[key] = value
}
}
}
答案 1 :(得分:11)
处理未知接口的安全方法,只需使用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)
}
答案 2 :(得分:1)
specs: ['example_spec.js'],
allScriptsTimeout: 30000,
// Options to be passed to Jasmine.