首页 > 解决方案 > 地图范围循环中的空接口

问题描述

下面的代码没有按预期工作。

package main

import "fmt"

func main() {
  questions := make(map[int]interface{})
  questions[1] = map[interface{}]string{
    "q1": "This is Question - 1?",
    "op1": "This is Option - 1",
    "op2": "This is Option - 2",
    true: "This is Option - 1",
  }

  // This give map[interface {}]string
  fmt.Printf("%T \n", questions[1])

  // This not working
  for key, val := range questions[1] {
    printf("%v : %v", key, val)
  }


}

覆盖地图的 for 循环不起作用。

Go 编译器给出错误“Cannot range over questions[1] (type interface {})”

标签: gointerface

解决方案


make go 明白questions[1]有类型是map

for key, val := range questions[1].(map[interface{}]string) {
    fmt.Printf("%v : %v\n", key, val)
}

推荐阅读