ソースから、私は_map[interface {}]interface {}
_として到着するマップ内のデータを与えられます。
できれば_map[string]string
_として含まれているデータを処理する必要があります(その中のデータは完全に適切です)。
事前に知られていないため、データからキーのリストも生成する必要があります。
私がウェブ上で見つけることができるほとんどの同様の質問は多かれ少なかれ、これは不可能であると言いますが、私のマップがm
である場合、fmt.Println(m)
はデータがそこにあり、_map[k0:v0 K1:v1 k2:v2 ... ]
_。
Fmt.Printlnでできることはどうすればできますか?
未知のインターフェースを処理する安全な方法は、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)
}
おそらく私は質問を誤解していますが、これはうまくいくでしょうか?
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
}
}
}
// data is map[string]interface{}
form := make(map[string]string)
for k, v := range data {
form[k] = v.(string)
}