散列任意对象的正确方法

Jak*_*ake 5 hash md5 go

我正在编写一个需要散列任意对象的数据结构.如果我给出一个int参数,以下函数似乎失败了.

func Hash( obj interface{} ) []byte {
    digest := md5.New()
    if err := binary.Write(digest, binary.LittleEndian, obj); err != nil {
        panic(err)
    }
    return digest.Sum()
}
Run Code Online (Sandbox Code Playgroud)

调用此int结果:

panic:binary.Write:无效的int类型

这样做的正确方法是什么?

pet*_*rSO 2

binary.Write写入“固定大小的值或指向固定大小值的指针”。int类型不是固定大小的值;int 是“32 位或 64 位”。使用固定大小的值,例如 int32。