猿问

如何重置地图地图中的值

这是我的代码


{

    saruman := map[string]int{

     "power": 150,

     "skills": 200,

     "knowledge": 380,

    }


    gandalf := map[string]int{

     "power": 180,

     "skills": 210,

     "knowledge": 240,

    }


    wizards := make(map[string]interface{})

    wizards["saruman"] = saruman

    wizards["gandalf"] = gandalf


    fmt.Println(wizards)

    //OK map[gandalf:map[knowledge:240 power:180 skills:210] saruman:map[knowledge:380 power:150 skills:200]]


    //change gandalf property

    wizards["gandalf"]["knowledge"] = 310


    fmt.Println(wizards)

}

在最后一行,我们得到:


NOK无效操作:wizards["gandalf"]["knowledge"](类型接口{}不支持索引)


扬帆大鱼
浏览 175回答 3
3回答

汪汪一只猫

您不能使用它["key"]来访问 golang 不知道的结构。因为它是interface{}甘道夫背后的价值,可以是任何东西。    wizards["gandalf"] = map[string]int{              "knowledge": 310,     }您必须指定要与之交互的数据类型。游乐场:https ://goplay.tools/snippet/O62ara8JbUv

慕慕森

这是更简单的方法:一行代码wizards["gandalf"].(map[string]int)["knowledge"] = 110完整示例:saruman := map[string]int{    "power":     150,    "skills":    200,    "knowledge": 380,}gandalf := map[string]int{    "power":     180,    "skills":    210,    "knowledge": 240,}wizards := make(map[string]interface{})wizards["saruman"] = sarumanwizards["gandalf"] = gandalf// fmt.Println(wizards)// OK map[gandalf:map[knowledge:240 power:180 skills:210] saruman:map[knowledge:380 power:150 skills:200]]// change gandalf propertywizards["gandalf"].(map[string]int)["knowledge"] = 110fmt.Println(wizards["gandalf"].(map[string]int)["knowledge"])

吃鸡游戏

需要投。{    saruman := map[string]int{        "power":     150,        "skills":    200,        "knowledge": 380,    }    gandalf := map[string]int{        "power":     180,        "skills":    210,        "knowledge": 240,    }    wizards := make(map[string]interface{})    wizards["saruman"] = saruman    wizards["gandalf"] = gandalf    fmt.Println(wizards)    //OK map[gandalf:map[knowledge:240 power:180 skills:210] saruman:map[knowledge:380 power:150 skills:200]]    //change gandalf property    wizards["gandalf"].(map[string]int)["knowledge"] = 10    fmt.Println(wizards)}
随时随地看视频慕课网APP

相关分类

Go
我要回答