我有一个变量需要是 astring
或map[string]string
(将从 JSON 反序列化)。所以我将其声明为interface{}
. 我如何检查该值是否为map[string]string
?仅在变量声明为map[string]string
not 且变量为 的情况下才有效interface{}
。
package main
import (
"fmt"
)
func main() {
var myMap interface{}
myMap = map[string]interface{}{
"foo": "bar",
}
_, ok := myMap.(map[string]string)
if !ok {
fmt.Println("This will be printed")
}
}
请参阅https://play.golang.org/p/mA-CVk7bdb9
不过我可以使用两种类型断言。一张在地图上,一张在地图上的值。
package main
import (
"fmt"
)
func main() {
var myMap interface{}
myMap = map[string]interface{}{
"foo": "bar",
}
valueMap, ok := myMap.(map[string]interface{})
if !ok {
fmt.Println("will not be printed")
}
for _, v := range valueMap {
if _, ok := v.(string); !ok {
fmt.Println("will not be printed")
}
}
}
问:有更好的办法吗?
慕容708150
相关分类