Я пытаюсь создать карту в Go, которая содержит ключи с большими целыми числами. В Effective Go прямо говорится, что:
Структуры, массивы и срезы нельзя использовать в качестве ключей карты, потому что для этих типов не определено равенство.
что имеет смысл. Конечно, я мог бы преобразовать большие целые числа в строки и использовать строку в качестве ключа, но я ищу здесь более общее решение. Могу ли я превратить мою структуру в нечто (интерфейс?), Реализующее функцию равенства, и использовать ее вместо этого?
Пример кода, который, конечно, не работает:
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)
}