【Golang语言社区】GO1.9 map并发安全测试

mb5fdb0a1b25659 · · 468 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

var m sync.Map //全局

func maintest() {

    // 第一个
    YongHuomap := make(map[string]StPaiHangBangPC)

    var test1 StPaiHangBangPC
    test1.OpenID = "openid_1"
    test1.PaiHang = "1"
    test1.YaoCiShu = "10"
    YongHuomap["openid_1"] = test1
    m.Store("ShangJiaOenID_1", YongHuomap)
    // 第二个
    YongHuomap2 := make(map[string]StPaiHangBangPC)
    var test2 StPaiHangBangPC
    test2.OpenID = "openid_2"
    test2.PaiHang = "2"
    test2.YaoCiShu = "9"
    YongHuomap2["openid_2"] = test2

    var test3 StPaiHangBangPC
    test3.OpenID = "openid_3"
    test3.PaiHang = "1"
    test3.YaoCiShu = "10"
    YongHuomap2["openid_3"] = test3

    var test5 StPaiHangBangPC
    test5.OpenID = "openid_4"
    test5.PaiHang = "1"
    test5.YaoCiShu = "1000099999"

    var test4 StPaiHangBangPC
    test4.OpenID = "openid_4"
    test4.PaiHang = "1"
    test4.YaoCiShu = "10"
    YongHuomap2["openid_4"] = test4

    //    获取存的数据
    rdata3, sss := m.Load("ShangJiaOenID_2")
    if sss {
        hdata := make(map[string]StPaiHangBangPC)
        for _, vvv11 := range rdata3.(interface{}).(map[string]StPaiHangBangPC) {

            var YongHuomapLinShi StPaiHangBangPC
            YongHuomapLinShi.OpenID = vvv11.OpenID
            YongHuomapLinShi.YaoCiShu = vvv11.YaoCiShu
            hdata[YongHuomapLinShi.OpenID] = YongHuomapLinShi

        }
        fmt.Println(hdata)
        hdata[test5.OpenID] = test5
        m.Store("ShangJiaOenID_2", hdata)
        fmt.Println(hdata)
        vv, _ := m.LoadOrStore("ShangJiaOenID_2", YongHuomap2)
        fmt.Println(vv)
    } else {
        m.Store("ShangJiaOenID_2", YongHuomap2)
    }


    rdata4, sss := m.Load("ShangJiaOenID_2")
    if sss {
        hdata := make(map[string]StPaiHangBangPC)
        for _, vvv11 := range rdata4.(interface{}).(map[string]StPaiHangBangPC) {

            var YongHuomapLinShi StPaiHangBangPC
            YongHuomapLinShi.OpenID = vvv11.OpenID
            YongHuomapLinShi.YaoCiShu = vvv11.YaoCiShu
            hdata[YongHuomapLinShi.OpenID] = YongHuomapLinShi

        }
        fmt.Println(hdata)
        hdata[test5.OpenID] = test5
        m.Store("ShangJiaOenID_2", hdata)
        fmt.Println(hdata)
        vv, _ := m.LoadOrStore("ShangJiaOenID_2", YongHuomap2)
        fmt.Println(vv)
    } else {
        m.Store("ShangJiaOenID_2", YongHuomap2)
    }


}
运行结果:

图片



有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:mb5fdb0a1b25659

查看原文:【Golang语言社区】GO1.9 map并发安全测试

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

468 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传