Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 关于golang接口循环_Loops_Go_Interface - Fatal编程技术网

Loops 关于golang接口循环

Loops 关于golang接口循环,loops,go,interface,Loops,Go,Interface,我想打印一个复杂的数据集,比如咆哮 package main import ( "fmt" // "reflect" ) func main() { var initData []interface{} initData[0] = map[string]interface{}{ "name": "k1", "type": "line", "data": []int{1, 2, 3, 4}, }

我想打印一个复杂的数据集,比如咆哮

package main
import (
    "fmt"
    // "reflect"
)

func main() {

    var initData []interface{}
    initData[0] = map[string]interface{}{
        "name": "k1",
        "type": "line",
        "data": []int{1, 2, 3, 4},
    }

    initData[1] = map[string]interface{}{
        "name": "k2",
        "type": "circle",
        "data": []int{11, 12, 13, 14},
    }

    for _, data := range initData {
        for k, v := range data {
            fmt.Println(k)
            for _, sv := range v {
                fmt.Println("  " + sv)
            }
        }

    }

}
但是我犯了一个错误

./maps-in-maps.go:56: cannot range over data (type interface {})
有什么帮助吗?若要尝试将接口类型的数据集协调到arry或slice之类的交互,必须首先在每个接口{}级别键入assert,在这种情况下,在map[string]接口{}级别使用类型断言,因为我们知道一个确定的类型,并使用类型开关检查下一级别中每个嵌套值的预期类型

initData := []interface{}{
        map[string]interface{}{
            "name": "k1",
            "type": "line",
            "data": []int{1, 2, 3, 4},
        },

        map[string]interface{}{
            "name": "k2",
            "type": "circle",
            "data": []int{11, 12, 13, 14},
        },
    }

    for _, data := range initData {
        for _, v := range data.(map[string]interface{}) {
            switch t := v.(type) {
            case string, []int:
                fmt.Println(t)
            default:
                fmt.Println("wrong type")           
            }
        }
    }
}
在操场上跑步