Tôi đang cố gắng tạo bản đồ trong Go được khóa bằng số nguyên lớn. Hiệu quả Hãy nói rõ ràng rằng:Các kiểu dữ liệu phức tạp như các phím trong bản đồ trong Go
Không thể sử dụng khóa bản đồ, mảng và lát làm khóa bản đồ vì tính bình đẳng không được xác định trên các loại đó.
có ý nghĩa. Tất nhiên tôi có thể chuyển đổi các số nguyên lớn thành chuỗi và sử dụng chuỗi làm khóa, nhưng tôi đang tìm một giải pháp tổng quát hơn ở đây. Tôi có thể bọc cấu trúc của tôi vào một cái gì đó (một giao diện?) Mà thực hiện một chức năng bình đẳng và sử dụng mà thay vào đó?
Ví dụ mã mà, tất nhiên, không hoạt động:
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)
}
không chỉ là bình đẳng. 'map' là một bảng băm, do đó, mỗi loại khóa cũng cần hàm băm – newacct
True. Và tôi quên rằng kể từ big.Int là mutable (mà tôi không thích) đặt chúng trong bảng băm có thể không được thông minh. Có lẽ tôi chỉ nên gắn bó với lập trình hàm :) – Olof