如果你有
proto.Message
[1] ,则可以免费获得封送处理函数[2]。
因此,在封送消息之后,只需将字节传递给
base64
或
md5
或者任何你想要的:
package main
import (
"encoding/base64"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/structpb"
)
func hash(m proto.Message) (string, error) {
b, err := proto.Marshal(m)
if err != nil {
return "", err
}
return base64.StdEncoding.EncodeToString(b), nil
}
func main() {
m, err := structpb.NewStruct(map[string]interface{}{
"month": 12, "day": 31,
})
if err != nil {
panic(err)
}
s, err := hash(m)
if err != nil {
panic(err)
}
println(s) // ChIKBW1vbnRoEgkRAAAAAAAAKEAKEAoDZGF5EgkRAAAAAAAAP0A=
}
-
https://godocs.io/google.golang.org/protobuf/proto#Message
-
https://godocs.io/google.golang.org/protobuf/proto#Marshal