Golangのマップはどのようにキーを比較しますか?何らかの理由で、内部に2つの値を持つキーとして構造体を持つ必要があります。私は最初の値だけでなく、秒で比較するマップをしたい。 2番目は私の用法です。 Javaの場合と同様に、私はequals
メソッドをカスタマイズすることができますので、マップ内にはlogically equal
キーしかかかりません。それを行う方法はありますか?Golangでは、構造体をキーとしてキー比較をカスタマイズできますか?
編集:これを行う方法がないように見えます。だからここで私の問題を解決しています。私に「Go-way」で考えさせてください。
したがって、キーの挿入時間を追跡する「タイムマップ」を実装したいと考えています。つまり、値を受け入れて処理するマップがあります。今、マップのデータが特定の時間間隔よりも古い場合、私はそれをクリアする必要があります。
私は、idとtimestampを持つキー構造体を持つと考えました。新しいキーが来ると、mapはidとcurrentTimeInMillisでそれをとります。キーがすでに存在する場合、マップは最初の挿入時間を保持し、値配列のみを更新します。
処理するには、マップをループし、特定のキーがしきい値を超えているかどうかを確認してから、クリアします。このタイムスタンプを値配列に含めることはできますが、それも独自のタイムスタンプを持つので、もう1つを入れると他の人を混乱させる可能性があります。
何かお勧めします。
いいえ、マップのハッシュ方法を変更することはできません。 – JimB
ああ、それは悪いニュースです。私はいくつかの選択肢を見つける必要があります。ゴランは非常に限られています。 :-( – theGamblerRises
@theGamblerRisesあなたは何をしたいのですか?golangにJavaコードを実装しないでください。 – khrm