私のアプリケーションで使用される "セット"のgormタイプを作成したいと思います。だから私は、フラグなどのキーと空のstructs{}
としての私のタイプgorm.DB
でmap
を定義したいと思います:map [gorm.DB] struct {} {}は無効なマップキータイプgorm.DBを与えます
var (
autoMigrations map[gorm.DB]struct{}
)
しかし、コンパイラは、私がエラーでこれを行うことはできません:invalid map key type gorm.DB
。私は次のようにgorm.DB
Sへのポインタを使用して、それをだますことができます。
map[*gorm.DB]struct{}
しかし、私はそれを一意にする必要があり、私のマップがdb.AutoMigrate(&Chat{})
のように満たされます場合、私は別のアドレスに類似したオブジェクトの多くを得ることができるので、それは、解決策はありません。
別の解決策は、gorm.DB
のスライスにすることです:
autoMigrations []gorm.DB
をしかし、私は非常識少し思われる、手動で追加の要素をフィルタリングする必要があります。
優秀な答え:
は、関連の質問を参照してください!独自の比較機能を定義するにはどうすればよいですか? Pythonの '__hash__'と同じですか?このように私はそれらを比較可能にすることができます。 –
@EugeneLisitskyいいえ、そうではありません。 Goランタイムによって自動的に使用されるカスタムコンパレータ関数を記述することはできません。 – icza