📅  最后修改于: 2023-12-03 15:15:23.141000             🧑  作者: Mango
reflect.MakeMap()
是 Golang 中的一个反射函数,用于新创建一个 map 并返回其值对象的 reflect.Value。使用 reflect.MakeMap()
能够方便地创建任意类型的 map 对象,使得代码更加灵活。
reflect.MakeMap(typ reflect.Type) reflect.Value
函数参数 typ
是一个 reflect.Type 类型对象,表示创建的 map 的键值对类型。
函数返回值是一个 reflect.Value 类型对象,表示创建的 map 的值。
下面是一个使用 reflect.MakeMap()
创建 map 并添加元素的示例代码:
package main
import (
"fmt"
"reflect"
)
func main() {
// 构造 map 类型
mapType := reflect.MapOf(reflect.TypeOf(""), reflect.TypeOf(0))
// 创建一个空 map
mapValue := reflect.MakeMap(mapType)
// 添加元素
mapValue.SetMapIndex(reflect.ValueOf("foo"), reflect.ValueOf(1))
mapValue.SetMapIndex(reflect.ValueOf("bar"), reflect.ValueOf(2))
mapValue.SetMapIndex(reflect.ValueOf("baz"), reflect.ValueOf(3))
// 遍历 map 并输出
keys := mapValue.MapKeys()
for _, k := range keys {
v := mapValue.MapIndex(k)
fmt.Printf("%v: %v\n", k, v)
}
}
在上述示例中,首先使用 reflect.MapOf()
函数创建一个 map[string]int
类型对象,然后使用 reflect.MakeMap()
创建一个空的 map[string]int
类型的 mapValue 对象。
之后使用 SetMapIndex()
函数添加了三个键值对到 map 中。最后,通过 MapKeys()
函数获取了所有的键名,遍历 map 并输出了其键值对。
使用 reflect.MakeMap()
创建 map 时,需要注意以下事项:
reflect.MapOf()
函数创建 reflect.Type 类型对象。SetMapIndex()
添加元素时,键和值类型必须和创建 map 时的类型一致。