📜  Golang 中的reflect.MapKeys()函数示例

📅  最后修改于: 2021-10-25 03:00:40             🧑  作者: Mango

Go 语言提供了运行时反射的内置支持实现,并允许程序在反射包的帮助下操作任意类型的对象。 Golang 中的reflect.MapKeys()函数用于以未指定的顺序获取包含地图中存在的所有键的切片。要访问此函数,需要在程序中导入反射包。

下面的例子说明了上述方法在 Golang 中的使用:

示例 1:

func (v Value) MapKeys() []Value

输出:

// Golang program to illustrate
// reflect.MapKeys() Function
    
package main
    
import (
    "fmt"
    "reflect"
)
  
// Main function
func main() {
    key := 10
    value := "Geeksforgeeks"
  
    mapType := reflect.MapOf(reflect.TypeOf(key), reflect.TypeOf(value))
  
    mapValue := reflect.MakeMap(mapType)
    mapValue.SetMapIndex(reflect.ValueOf(key), reflect.ValueOf(value))
  
    keys := mapValue.MapKeys()
    fmt.Println(keys)
  
}

示例 2:

[]

输出:

// Golang program to illustrate
// reflect.MapKeys() Function
    
package main
    
import (
    "fmt"
    "reflect"
)
  
// Main function
func main() {
    key := 1
    value := "abc"
  
    mapType := reflect.MapOf(reflect.TypeOf(key), reflect.TypeOf(value))
  
    mapValue := reflect.MakeMap(mapType)
    mapValue.SetMapIndex(reflect.ValueOf(key), reflect.ValueOf(value))
    mapValue.SetMapIndex(reflect.ValueOf(2), reflect.ValueOf("def"))
    mapValue.SetMapIndex(reflect.ValueOf(3), reflect.ValueOf("gh"))
  
    keys := mapValue.MapKeys()
    for _, k := range keys {
        c_key := k.Convert(mapValue.Type().Key())
        c_value := mapValue.MapIndex(c_key)
        fmt.Println("key :", c_key, " value:", c_value)
    }
  
}