douzhuo6931 2014-06-17 17:44
浏览 758
已采纳

如何在Go中使用[] interface {}类型访问数组的某些部分?

I have a map with string keys and different types for values, when printing it looks like this:

map[command:ls count:[1 1]]

When checking reflect.TypeOf on the count it returns type []interface{}. I cannot access the values by index, and if I try passing it into a function that accept a param of type []interface{} it claims that I'm tying to pass a value of type interface{}

I would like to access the count in this example which would be 2 values. 1 and 1.

  • 写回答

1条回答 默认 最新

  • dpstir0081 2014-06-17 18:05
    关注

    You have to differentiate type and underlying type. Your map is of the type map[string]interface{}. Which means that the value for count is of type interface{}, and its underlying type if []interface{}. So you can't pass the count as a type []interface{}. You have do a type assertion it before using it as an array. Every item will then of type interface{}, which can in turn be asserted as int (as it seem your data is).

    Example:

    count := m["count"].([]interface{})
    value1 := count[0].(int)
    value2 := count[1].(int)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题