3

こんにちは、双方向ロックアップを行う必要があり、map[key][key] のようなマップ構造が必要です。Go でそのように考える人はいますか? または、それを行うための最良の方法は何ですか?

4

1 に答える 1

5

言語やライブラリ (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
}

于 2013-02-18T23:14:49.297 に答える