golang 里 sync.Map 不能方便的修改元素某值

2021-02-09 10:11:33 +08:00
 dongtingyue

有别的类型可以替代么?实现类似下面的功能

tmp,_ := testlist.Load(2)
tmp.(UserInfo).Name = "test55"
1901 次点击
所在节点    Go 编程语言
8 条回复
xkeyideal
2021-02-09 10:18:50 +08:00
仅限于这两行代码,先想想有没有并发问题
virusdefender
2021-02-09 10:30:08 +08:00
给自己的 map 加个锁就行吧,你这样写可能还会有竞争
dongtingyue
2021-02-09 16:27:51 +08:00
@xkeyideal sync.Map 不支持 load 后直接修改,只是示例下。
dongtingyue
2021-02-09 16:28:39 +08:00
@virusdefender 还有别的方法么?相当于存用户位置,经常改变和读取全部用户位置这样。
xkeyideal
2021-02-09 17:22:37 +08:00
@dongtingyue 没有什么好办法,sync.Map 的适用场景是读多写少,可以看看压测对比,性能没有优势的;你这种需求本身只能拿出来修改
dbskcnc
2021-02-09 19:30:11 +08:00
a8m/syncmap 挺好用
sdh
2021-02-09 20:11:16 +08:00
存指针就好*UserInfo
Dongxiem
2021-02-09 20:45:08 +08:00
如楼上所说,如果是写多的情况不应该使用 sync.map 啊,尝试使用 sync.mutex 吧!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/752533

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX