Golang reflect.MapKeys()函数的使用及示例
Go语言提供了可运行时反射的内置支持,并允许程序使用reflect包来操作任意类型的对象。在Golang中, reflect.MapKeys() 函数用于获取切片,其中包含映射中所有的键,排序不定。要访问此函数,需要在程序中导入reflect包。
语法:
func (v Value) MapKeys() []Value
参数: 此函数不接受任何参数。
返回值: 此函数返回一个包含映射中所有键的切片,排序不定。
以下示例说明了在Golang中使用上述方法:
示例1:
// Golang程序,说明
// reflect.MapKeys()函数
package main
import (
"fmt"
"reflect"
)
// 主要函数
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)
}
输出:
[<int Value>]
示例2:
// Golang程序,说明
// reflect.MapKeys()函数
package main
import (
"fmt"
"reflect"
)
// 主要函数
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)
}
}
输出:
key : 1 value: abc
key : 2 value: def
key : 3 value: gh