dsgdsf12312 2013-02-18 23:12
浏览 27
已采纳

有像BidiMap这样的东西吗?

Hi I need to do some bidirectional lockup and need some caind of map structure like map[key][key] are there some think like that in Go? Or what is the best way to go about doing it?

  • 写回答

1条回答 默认 最新

  • dongzong8110 2013-02-18 23:14
    关注

    There's no such thing in the language or the library (AFAIK), but they're easy enough to implement: just combine two maps in a struct and make sure they stay in sync. The only problem is that it's hard to write these in a generic manner, but that can be done using interface{}:

    type BidirMap struct {
        left, right map[interface{}]interface{}
    }
    
    func (m *BidirMap) Insert(key, val interface{}) {
        if _, inleft := left[key]; inleft {
            delete(left, key)
        }
        if _, inright := right[val]; inright {
            delete(right, val)
        }
        m.left[key] = val
        m.right[val] = key
    }
    

    etc.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料