diff options
author | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-01-16 05:28:48 +0800 |
---|---|---|
committer | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-01-16 05:28:48 +0800 |
commit | 52bb14954190fd9041eda866e1f70b4b60eee521 (patch) | |
tree | 98d2496f6ea4a409493328043e323c35eb2abf1c /rlp/encoder_example_test.go | |
parent | bb55307a9d8fa73b0fbc0727f8b80925a87627b7 (diff) | |
parent | 29c46cdf3405d6462deb2cb5cef87b1b4fb2bdc7 (diff) | |
download | go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar.gz go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar.bz2 go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar.lz go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar.xz go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar.zst go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.zip |
Merge pull request #257 from fjl/rlp-encoder
rlp: add functions for encoding
Diffstat (limited to 'rlp/encoder_example_test.go')
-rw-r--r-- | rlp/encoder_example_test.go | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/rlp/encoder_example_test.go b/rlp/encoder_example_test.go new file mode 100644 index 000000000..57bad604d --- /dev/null +++ b/rlp/encoder_example_test.go @@ -0,0 +1,38 @@ +package rlp + +import ( + "fmt" + "io" +) + +type MyCoolType struct { + Name string + a, b uint +} + +// EncodeRLP writes x as RLP list [a, b] that omits the Name field. +func (x *MyCoolType) EncodeRLP(w io.Writer) (err error) { + // Note: the receiver can be a nil pointer. This allows you to + // control the encoding of nil, but it also means that you have to + // check for a nil receiver. + if x == nil { + err = Encode(w, []uint{0, 0}) + } else { + err = Encode(w, []uint{x.a, x.b}) + } + return err +} + +func ExampleEncoder() { + var t *MyCoolType // t is nil pointer to MyCoolType + bytes, _ := EncodeToBytes(t) + fmt.Printf("%v → %X\n", t, bytes) + + t = &MyCoolType{Name: "foobar", a: 5, b: 6} + bytes, _ = EncodeToBytes(t) + fmt.Printf("%v → %X\n", t, bytes) + + // Output: + // <nil> → C28080 + // &{foobar 5 6} → C20506 +} |