私はまだ物事のやり方に慣れていません。ここでは、BidiMap をラップするタイプ ClientConnectorPool があります。この型をどのように初期化すればよいですか? 私のbidiMapのあとがきに追加できるように?これを行う私の試みはすべてハックであり、インスピレーションが必要です。何らかの種類の om make(ClientConnectorPool) 関数を実装できますか?
私の頭ではこのように見えるはずですが、私の解決策はすべて、nil ポインターエラーを回避するための 15 行のコードのようなものです:D
CC = make(ClientConnectorPool)
CC.Add("foo","bar")
コード:
package main
import ()
type ClientConnectorPool struct {
Name string
ConnectorList BidirMap
}
func (c ClientConnectorPool) Add(key, val interface{}){
c.ConnectorList.Add(key,val)
}
type BidirMap struct {
left, right map[interface{}]interface{}
}
func (m BidirMap) Add(key, val interface{}) {
if _, inleft := m.left[key]; inleft {
delete(m.left, key)
}
if _, inright := m.right[val]; inright {
delete(m.right, val)
}
m.left[key] = val
m.right[val] = key
}