Angenommen, ich habe einen Strukturtyp in Go, den ich als Schlüssel in einer Map verwenden möchte, aber ich möchte nicht Go's eingebaute Gleichheitsoperation verwenden. Was ist der beste Weg, um eine solche Karte zu erstellen?Go Karte mit benutzerdefinierten Schlüssel mit benutzerdefinierten Gleichheit?
Für ein konkretes Beispiel, hier ist mein Schlüssel Art und Gleichheit Betrieb:
type Key struct {
a *int
}
func Equal(x Key, y Key) bool {
return *x.a == *y.a
}
Wie kann ich eine Karte erstellen, die Equal
für Schlüsselvergleich verwendet?
Aber wie würde ich sagen, dass Karte diese Methode verwenden sollte? Schlimmer noch, in meinem echten Code ist das Feld a ein Stück von int, und soweit ich weiß, gibt es keine integrierten Gleichheitsoperationen für Sil- ces. –
Ja, in der FAQ https://golang.org/doc/faq gibt es eine Frage, warum Karten nicht Slices als Schlüssel erlauben und die Antwort ist, dass es keinen eingebauten Gleichheitsoperator gibt. Ich habe vorgeschlagen, was ich für die vernünftigste Lösung in meiner Antwort halte. – evanmcdonnal