Supponiamo di avere un tipo di struttura in Vai che desidero utilizzare come chiave in una mappa, ma I non desidera utilizzare l'operazione di uguaglianza integrata di Go. Qual è il modo migliore per costruire una mappa del genere?Vai mappa con chiave definita dall'utente con uguaglianza definita dall'utente?
Per un esempio concreto, ecco la mia chiave di tipo e l'uguaglianza di funzionamento:
type Key struct {
a *int
}
func Equal(x Key, y Key) bool {
return *x.a == *y.a
}
Come posso costruire una mappa che utilizza Equal
per il confronto chiave?
Ma come dovrei dichiarare che la mappa dovrebbe usare quel metodo? Peggio ancora, nel mio vero codice, il campo a è una porzione di int e, per quanto ne so, non ci sono operazioni di uguaglianza integrate per i silenti. –
Sì nelle FAQ https://golang.org/doc/faq c'è una domanda per "perché le mappe non consentono le porzioni come chiavi" e la risposta è che non esiste un operatore di uguaglianza integrato. Ho proposto quella che penso sia la soluzione più ragionevole nella mia risposta. – evanmcdonnal