幕布斯6054654
在语言或库(AFAIK)中都没有这种东西,但是它们很容易实现:只需将两个地图组合到中struct并确保它们保持同步即可。唯一的问题是,很难以通用的方式编写这些代码,但是可以使用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}