简介

最近在学Go语言,在使用map的时候遇到一个小坑,记录一下。

代码介绍

package main
import "fmt"
func main(){
    mapA := make([string]interface{})
    mapB := make([string]interface{})
    mapA["name"] = "大叶" 
    mapA["age"]  = 25
    mapB["mapA"] = mapA
    for k, v := range mapB {
        (k == ) {
            for _, v1 := range v{
                fmt.Println(v1)
            }
        }
    }
    //cannot range over v (type interface {})  不能对一个空接口进行range
    //所以再来看看下 上面发生了什么
    //mapA["name"] = "xiaowen" //字符串被强转成interface{}
    //mapA["ege"]  = 25        //int被强转成interface{}
    //mapB["mapA"] = mapA     //mapA被转成interface{}了 取出可以强转成  map[string]interface{}
    for k, v := range mapB {
        if (k == "mapA") {
            for _, v1 := range v.(map[string]interface{}){
                fmt.Println(v1) 
            } 
        }
    }
    //这里把v再转成mapA的类型即可
    //强类型语言要时刻记着类型的转换奥!
}

待续···