Golang reflect.MapKeys()函数的使用及示例

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程