diff options
author | Tim Cooper <tim.cooper@layeh.com> | 2017-11-03 20:17:08 -0300 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2017-11-04 03:47:34 +0000 |
commit | 0ee4527ac7a4472c51c13948a3ac3e0c51a51838 (patch) | |
tree | cd01d747f6e4c2b89c3ba0e8390f252986905c3e /src/hash | |
parent | af015b1f21949c6ef40989f4746431919c7df6e7 (diff) | |
download | go-0ee4527ac7a4472c51c13948a3ac3e0c51a51838.tar.gz go-0ee4527ac7a4472c51c13948a3ac3e0c51a51838.zip |
hash: add marshaling, unmarshaling example
Example usage of functionality implemented in CL 66710.
Change-Id: I87d6e4d2fb7a60e4ba1e6ef02715480eb7e8f8bd
Reviewed-on: https://go-review.googlesource.com/76011
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/hash')
-rw-r--r-- | src/hash/example_test.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/hash/example_test.go b/src/hash/example_test.go new file mode 100644 index 0000000000..f07b9aaa2c --- /dev/null +++ b/src/hash/example_test.go @@ -0,0 +1,51 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package hash_test + +import ( + "bytes" + "crypto/sha256" + "encoding" + "fmt" + "log" +) + +func Example_binaryMarshaler() { + const ( + input1 = "The tunneling gopher digs downwards, " + input2 = "unaware of what he will find." + ) + + first := sha256.New() + first.Write([]byte(input1)) + + marshaler, ok := first.(encoding.BinaryMarshaler) + if !ok { + log.Fatal("first does not implement encoding.BinaryMarshaler") + } + state, err := marshaler.MarshalBinary() + if err != nil { + log.Fatal("unable to marshal hash:", err) + } + + second := sha256.New() + + unmarshaler, ok := second.(encoding.BinaryUnmarshaler) + if !ok { + log.Fatal("second does not implement encoding.BinaryUnmarshaler") + } + if err := unmarshaler.UnmarshalBinary(state); err != nil { + log.Fatal("unable to unmarshal hash:", err) + } + + first.Write([]byte(input2)) + second.Write([]byte(input2)) + + fmt.Printf("%x\n", first.Sum(nil)) + fmt.Println(bytes.Equal(first.Sum(nil), second.Sum(nil))) + // Output: + // 57d51a066f3a39942649cd9a76c77e97ceab246756ff3888659e6aa5a07f4a52 + // true +} |