Go 语言提供了运行时反射的内置支持实现,并允许程序在反射包的帮助下操作任意类型的对象。 Golang 中的reflect.MapKeys()函数用于以未指定的顺序获取包含地图中存在的所有键的切片。要访问此函数,需要在程序中导入反射包。
Syntax:
Parameters: This function does not accept any parameter.
Return Value: This function returns a slice containing all the keys present in the map, in unspecified order.
下面的例子说明了上述方法在 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)
}
}