github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/rlp/decode_tail_test.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:45</date> 10 //</624342662832459776> 11 12 13 package rlp 14 15 import ( 16 "bytes" 17 "fmt" 18 ) 19 20 type structWithTail struct { 21 A, B uint 22 C []uint `rlp:"tail"` 23 } 24 25 func ExampleDecode_structTagTail() { 26 //在本例中,“tail”结构标记用于解码 27 //结构中的不同长度。 28 var val structWithTail 29 30 err := Decode(bytes.NewReader([]byte{0xC4, 0x01, 0x02, 0x03, 0x04}), &val) 31 fmt.Printf("with 4 elements: err=%v val=%v\n", err, val) 32 33 err = Decode(bytes.NewReader([]byte{0xC6, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06}), &val) 34 fmt.Printf("with 6 elements: err=%v val=%v\n", err, val) 35 36 //请注意,必须至少有两个list元素存在于 37 //填充字段A和B: 38 err = Decode(bytes.NewReader([]byte{0xC1, 0x01}), &val) 39 fmt.Printf("with 1 element: err=%q\n", err) 40 41 //输出: 42 //有4个元素:err=<nil>val=1 2[3 4] 43 //有6个元素:err=<nil>val=1 2[3 4 5 6] 44 //with 1 element:err=“rlp:rlp.structWithTail的元素太少” 45 } 46