问题:将 Interface{} 转换为映射并迭代它
尝试创建一个可以接受各种数据结构的通用函数,包括结构体、结构体切片和带有字符串的映射键和结构值,您在尝试迭代映射时遇到错误。反思界面表明它确实是一个地图,但通过范围迭代访问其元素会导致错误。
A:使用类型开关或 Value.MapKeys
有两种方法可以解决此问题:
类型开关:
对于例如:
switch in := in.(type) { case map[string]*Book: for key, value := range in { fmt.Printf("Key: %s, Value: %v\n", key, value) } default: // Handle other cases as needed. }
Value.MapKeys:
例如:
v := reflect.ValueOf(in) keys := v.MapKeys() for _, key := range keys { value := v.MapIndex(key) fmt.Printf("Key: %v, Value: %v\n", key.Interface(), value.Interface()) }
以上是如何迭代从接口反射的地图{}?的详细内容。更多信息请关注PHP中文网其他相关文章!