为了账号安全,请及时绑定邮箱和手机立即绑定

戈朗地图放如果缺席?

戈朗地图放如果缺席?

Go
四季花海 2022-09-05 10:52:53
我有一个格式的地图:map[string]map[string]int在这个主地图中,我想做一些像我们在Java中一样的事情。在 Go 中,什么是干净且速记的方法?putIfAbsent("key", new HashMap<>()
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您可以执行以下操作:


var val map[string]int

val, exists := m[key]

if !exists {

    val = make(map[string]int)

    m[key] = val

}

如果您不需要下面的代码:val


if _,exists := m[key]; !exists {

    m[key]=make(map[string]int)

}


查看完整回答
反对 回复 2022-09-05
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

如果您不打算立即使用该值,那么在这里...


m := make(map[string]map[string]int)


if _, ok := m["unknown"]; !ok {

    m["unknown"] = make(map[string]int)

}

以下是改进建议:为了保持整洁易懂,您可以定义自己的类型。例如,如果您的数据是“城市到老年人”的映射,我会这样做:


type Person map[string]int

type City map[string]Person


m := make(City)


if _, ok := m["Dhaka"]; !ok {

    m["Dhaka"] = make(Person)

}


查看完整回答
反对 回复 2022-09-05
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

func main() {

    var testMap map[int]interface{}

    testMap = make(map[int]interface{})


    var addMap map[int]string

    addMap = make(map[int]string)

    addMap[1] = "999"

    addMap[2] = "888"


    Add(testMap, 111, addMap)


    for key, val := range testMap {

        fmt.Println(key)

        for key2, val2 := range val.(map[int]string) {

            fmt.Println(key2, val2)

        }

    }

}

func Add(_testMap map[int]interface{}, _key int, _val map[int]string) {

    _, exist := _testMap[_key] // _ -> value

    if exist == false {

        //addmap

        _testMap[_key] = _val

    } else {

        //whatever wanna to do

    }

}


查看完整回答
反对 回复 2022-09-05
  • 3 回答
  • 0 关注
  • 63 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信