Sto provando a creare una mappa in Go che è composta da grandi numeri interi. Esplicitamente Go dice esplicitamente che:Tipi di dati complessi come chiavi nelle mappe in Go
Le strutture, le matrici e le porzioni non possono essere utilizzate come chiavi di mappa, poiché l'uguaglianza non è definita su questi tipi.
che ha senso. Naturalmente potrei convertire i grandi numeri interi in stringhe e usare la stringa come chiave, ma sto cercando una soluzione più generale qui. Posso avvolgere la mia struttura in qualcosa (un'interfaccia?) Che implementa una funzione di uguaglianza e usarla invece?
il codice di esempio che, ovviamente, non funziona:
package main
import (
"big"
"fmt"
)
func main() {
one1 := big.NewInt(1)
one2 := big.NewInt(1)
hmap := make(map[*big.Int] int)
hmap[one1] = 2
_, exists := hmap[one2]
fmt.Printf("Exists=%v\n", exists)
}
non è solo l'uguaglianza. 'map' è una tabella hash, quindi ogni tipo di chiave necessita anche di una funzione hash – newacct
True. E ho dimenticato che dal momento che big.Int è mutabile (che non mi piace) metterli in tabelle hash potrebbe non essere così intelligente. Forse dovrei solo attenermi alla programmazione funzionale :) – Olof