1 回答

TA貢獻1797條經(jīng)驗 獲得超6個贊
MapKeys
您可以在包中使用reflect
來做到這一點
MapKeys 返回一個切片,其中包含映射中存在的所有鍵(按未指定的順序)。如果 v 的 Kind 不是 Map,它會發(fā)生恐慌。如果 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 關(guān)注
- 136 瀏覽
添加回答
舉報