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