1 回答
TA贡献1797条经验 获得超6个赞
MapKeys
您可以在包中使用reflect
来做到这一点
MapKeys 返回一个切片,其中包含映射中存在的所有键(按未指定的顺序)。如果 v 的 Kind 不是 Map,它会发生恐慌。如果 v 表示 nil 映射,则它返回一个空切片。
下面给出了一个示例
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Println(mapLowCaseKeys(map[string]float64{
"key1" : 1.2,
}))
fmt.Println(mapLowCaseKeys(map[string]interface{} {
"key1" : 1.2,
"key2" : map[string]string{"kk": "3"},
}))
fmt.Println(mapLowCaseKeys(map[int]float64{
11 : 1.2,
}))
fmt.Println(mapLowCaseKeys(nil))
}
func mapLowCaseKeys(v interface{}) []string {
keys := []string{}
value := reflect.ValueOf(v)
if value.Kind() == reflect.Map {
for _, v := range value.MapKeys() {
if v.Kind() == reflect.String {
keys = append(keys, v.String())
}
}
return keys
} else {
fmt.Println("it is not a map!!")
return keys
}
}
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报