当前位置: 首页 > 面试题库 >

打印Golang地图的键/值类型

东方和惬
2023-03-14
问题内容

我正在尝试打印地图的类型,例如:map [int] string

func handleMap(m reflect.Value) string {

    keys := m.MapKeys()
    n := len(keys)

    keyType := reflect.ValueOf(keys).Type().Elem().String()
    valType := m.Type().Elem().String()

    return fmt.Sprintf("map[%s]%s>", keyType, valType)
}

所以如果我这样做:

log.Println(handleMap(make(map[int]string)))

我想得到 "map[int]string"

但我找不到正确的电话。


问题答案:

尽量不要使用reflect。但是,如果您必须使用reflect

  • reflect.Value值具有Type()函数,该函数返回一个reflect.Type值。
  • 如果该类型Kind()reflect.Map,则这reflect.Valuemap[T1]T2某些类型T1和T2 的type值,其中T1是键类型,T2是元素类型。

因此,在使用时reflect,我们可以像这样将片段分开:

func show(m reflect.Value) {
    t := m.Type()
    if t.Kind() != reflect.Map {
        panic("not a map")
    }
    kt := t.Key()
    et := t.Elem()
    fmt.Printf("m = map from %s to %s\n", kt, et)
}

在Go
Playground上查看更完整的示例
。(请注意,两个映射实际上都是nil,因此没有要枚举的键和值。)



 类似资料:
  • 我创建了一个带有整数类型键的映射,值是字符串集。我已经用一些测试数据填充了映射,现在需要编写一个方法来打印映射的内容,例如“key: value, value, value” 我假设迭代映射,并将键分配给int变量并打印出来是如何开始的,但是我该如何打印字符串集中的值呢?

  • 问题内容: 为什么地图打印混乱,如何使它秩序井然? 打印输出: 问题答案: 码: (其中大部分是从萨默菲尔德先生的书中偷走的) 输出:

  • 我不确定此错误消息的含义:*错误:请求成员开始在counter.std::映射

  • 我有这个JSON: 我想打印键值对,其中键匹配状态和选项,以及时间和它的值。我可以通过使用下面的命令打印时间和所有键值对,但不确定如何提取特定的键值对。 这将产生以下输出: 但我想要的结果是:

  • 我正在寻找一种漂亮的方法来打印地图。 <代码>贴图。toString()给我:

  • 我们提供您的业务地图高清图片的生成服务,每次生成高清地图,1500元起价。并根据打印的范围、详细程度、标注数量来计算实际价格,范围越大、内容越详细、标注越多,价格则越高。 以下样图生成价格为2500元:点此下载原图 (约10M,建议在wifi环境下下载) 打印的范围,添加一个区域用以标明输出的范围。 地图的详细程度,用地图左下角的比例尺数字告诉小图,如下图所示: 有的小伙伴会问,我的地图,打印出来