Golang的sync.Map中存入struct,取出来是空数据

图片描述

var Rooms sync.Map

type Room struct {
    RoomID string
    Time int64 "创建时间"
    Player1 int "P1玩家ID"
    Player2 int
    Player1Accept bool "P1玩家是否接受游戏"
    Player2Accept bool
}

如图所示,存入Rooms这个map的Player1和Player2是1和2,但是取出来的时候是0,这是什么原因呢?

阅读 9.1k
3 个回答

真没看出来有什么不对的地方,基本用法就是这样的。

不知道你调用AddRoom的地方是什么样的?

写法有问题,GetRoom返回的Room对象即使Load失败也会返回一个未初始化的Room。还有就是通常使用Room指针去store和load,不然会有拷贝问题...不知道你是不是因为需求才这样写

第39行,如果ok==false的话,也返回了r, true
跟踪一下GetRoom,看看是不是没有找到这个room

另外if ok == true也可以写成if ok :)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏