2 回答
TA贡献1874条经验 获得超12个赞
是的,如果键类型是 "exactly" ,你做了什么报告string。
但是例如,如果键类型是一个自定义类型作为string其基础类型,就像这个例子:
type mystr string
m := map[mystr]int{}
那么密钥类型将不等于reflect.TypeOf("")。
如果这是你想要的,这取决于你。如果你也想接受上述地图类型,你可以检查键的类型是否等于reflect.String这样:
if v.Type().Key() == reflect.TypeOf("") {
fmt.Print("It is string")
}
if v.Type().Key().Kind() == reflect.String {
fmt.Print("It is string kind")
}
对于上面的内容map[mystr]int,这是输出(在Go Playground上尝试):
It is string kind
(密钥不是 type string,而是 kind string。)
TA贡献1786条经验 获得超12个赞
您可以提取Kind密钥并在reflect包中使用种类枚举来处理它,如下reflect.String所示:
package main
import (
"fmt"
"reflect"
)
func main() {
obj := make(map[string]interface{})
fmt.Println(reflect.TypeOf(obj).Key().Kind() == reflect.String) // It will print true
}
- 2 回答
- 0 关注
- 103 浏览
添加回答
举报