diff options
author | Felix Lange <fjl@twurst.com> | 2015-12-22 04:05:20 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2016-02-19 18:14:29 +0800 |
commit | bb07ce3eedabb2133227ba1d7569d171d8e5b25c (patch) | |
tree | 9e5b8ff9506f39ca1b94a21833b96646ccb7a19b /rlp/decode_tail_test.go | |
parent | fdb936ee95d09b1b98418735a813deba6770ad5a (diff) | |
download | go-tangerine-bb07ce3eedabb2133227ba1d7569d171d8e5b25c.tar go-tangerine-bb07ce3eedabb2133227ba1d7569d171d8e5b25c.tar.gz go-tangerine-bb07ce3eedabb2133227ba1d7569d171d8e5b25c.tar.bz2 go-tangerine-bb07ce3eedabb2133227ba1d7569d171d8e5b25c.tar.lz go-tangerine-bb07ce3eedabb2133227ba1d7569d171d8e5b25c.tar.xz go-tangerine-bb07ce3eedabb2133227ba1d7569d171d8e5b25c.tar.zst go-tangerine-bb07ce3eedabb2133227ba1d7569d171d8e5b25c.zip |
rlp: add "tail" struct tag
Diffstat (limited to 'rlp/decode_tail_test.go')
-rw-r--r-- | rlp/decode_tail_test.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/rlp/decode_tail_test.go b/rlp/decode_tail_test.go new file mode 100644 index 000000000..885354390 --- /dev/null +++ b/rlp/decode_tail_test.go @@ -0,0 +1,33 @@ +package rlp + +import ( + "bytes" + "fmt" +) + +type structWithTail struct { + A, B uint + C []uint `rlp:"tail"` +} + +func ExampleDecode_structTagTail() { + // In this example, the "tail" struct tag is used to decode lists of + // differing length into a struct. + var val structWithTail + + err := Decode(bytes.NewReader([]byte{0xC4, 0x01, 0x02, 0x03, 0x04}), &val) + fmt.Printf("with 4 elements: err=%v val=%v\n", err, val) + + err = Decode(bytes.NewReader([]byte{0xC6, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06}), &val) + fmt.Printf("with 6 elements: err=%v val=%v\n", err, val) + + // Note that at least two list elements must be present to + // fill fields A and B: + err = Decode(bytes.NewReader([]byte{0xC1, 0x01}), &val) + fmt.Printf("with 1 element: err=%q\n", err) + + // Output: + // with 4 elements: err=<nil> val={1 2 [3 4]} + // with 6 elements: err=<nil> val={1 2 [3 4 5 6]} + // with 1 element: err="rlp: too few elements for rlp.structWithTail" +} |