NewReader 构造函数

    simple 如果为 true,则不使用引用方式反序列化,通常在反序列化的数据中不包含引用类型数据时,设置为 true 可以加快速度。当包含引用类型数据时,需要设置为 false(即默认值),否则会抛出异常。

    Simple 字段

    同上面的 simple 参数。

    JSONCompatible 字段

    反序列化数据时,如果反序列化的数据为 interface{} 的指针,而不是某个具体类型数据的指针,那么将会按照默认类型序列化。下面是 hprose 类型与反序列化默认类型的对应关系表:

    1. Long | *big.Int

    Double | float64Boolean | boolUTF8 char | stringNull | nilEmpty | ""DateTime | time.TimeBytes | []byteString | stringGUID | stringList | []interface{}Map | map[interface{}]interface{}Object | 结构体对象指针

    我们会发现 Map 类型的默认映射类型是:map[interface{}]interface{},如果将 JSONCompatible 字段设置为 true,则 Map 类型的默认映射类型是:map[string]interface{},当你确认你的 Map 数据是 JSON 兼容的,即 map 的 key 一定是 string 类型或者可以转换为 string 类型的数据时,可以将该字段设置为 true

    CheckTag 方法

    1. func (r *Reader) CheckTag(expectTag byte) (tag byte)

    检查当前位置的字节是否为 expectTag,如果是返回该 tag 字节,否则 panic。

    CheckTags 方法

    1. func (r *Reader) CheckTags(expectTags []byte) (tag byte)

    检查当前位置的字节是否为 expectTags 之一,如果是返回该 tag 字节,否则 panic。

    ReadBigIntWithoutTag 方法

    1. func (r *Reader) ReadBigIntWithoutTag() *big.Int

    r 的当前位置读取数据并反序列化为一个 *big.Int 类型的数据。该方法假设序列化标记已被读取,并且其值为 TagLong

    如果反序列化过程中发生错误,则 panic。

    ReadBool 方法

    1. func (r *Reader) ReadBool() bool

    r 的当前位置读取数据并反序列化为一个 值。

    如果反序列化过程中发生错误,则 panic。

    ReadBytesWithoutTag 方法

      r 的当前位置读取数据并反序列化为 []byte 结果并返回。该方法假设序列化标记已被读取,并且其值为 TagBytes。

      如果反序列化过程中发生错误,则 panic。

      ReadComplex128 方法

      1. func (r *Reader) ReadComplex128() complex128

      r 的当前位置读取数据并反序列化为一个 complex128 值。

      如果反序列化过程中发生错误,则 panic。

      ReadComplex64 方法

      如果反序列化过程中发生错误,则 panic。

      ReadCount 方法

      1. func (r *Reader) ReadCount() int

      r 的当前位置读取数组,slice,map 或者结构体字段的数量。该方法假设序列化标记已被读取。该方法主要用于 RPC 实现,用户通常不需要直接使用该方法。

      如果反序列化过程中发生错误,则 panic。

      ReadDateTimeWithoutTag 方法

      1. func (r *Reader) ReadDateTimeWithoutTag() (dt time.Time)

      r 的当前位置读取数据并反序列化为一个 time.Time 值。该方法假设序列化标记已被读取,并且其值为 TagDate

      如果反序列化过程中发生错误,则 panic。

      ReadFloat32 方法

      1. func (r *Reader) ReadFloat32() float32

      r 的当前位置读取数据并反序列化为一个 float32 值。

      如果反序列化过程中发生错误,则 panic。

      ReadFloat64 方法

      1. func (r *Reader) ReadFloat64() float64

      r 的当前位置读取数据并反序列化为一个 float64 值。

      如果反序列化过程中发生错误,则 panic。

      ReadInt 方法

      1. func (r *Reader) ReadInt() int64

      r 的当前位置读取数据并反序列化为一个 int64 值。

      如果反序列化过程中发生错误,则 panic。

      ReadIntWithoutTag 方法

      1. func (r *Reader) ReadIntWithoutTag() int

      r 的当前位置读取数据并反序列化为一个 int 值。该方法假设序列化标记已被读取,并且其值为 TagInteger

      如果反序列化过程中发生错误,则 panic。

      ReadSlice 方法

      1. func (r *Reader) ReadSlice(v []reflect.Value)

      r 的当前位置读取数据并反序列化到 v 中。该方法假设序列化标记已被读取,并且其值为 ,且元素个数也已被读取,并且等于 v 的长度,反序列化时,每个元素按照 v 中每个元素的类型进行反序列化。该方法用于 RPC 实现,用户通常不需要使用该方法。

      如果反序列化过程中发生错误,则 panic。

      ReadSliceWithoutTag 方法

      如果反序列化过程中发生错误,则 panic。

      ReadString 方法

      1. func (r *Reader) ReadString() (str string)

      r 的当前位置读取数据并反序列化为一个 string 类型的数据。

      如果反序列化过程中发生错误,则 panic。

      ReadStringWithoutTag 方法

      1. func (r *Reader) ReadStringWithoutTag() (str string)

      r 的当前位置读取数据并反序列化为一个 string 类型的数据。该方法假设序列化标记已被读取,并且其值为 TagString

      如果反序列化过程中发生错误,则 panic。

      ReadTime 方法

      1. func (r *Reader) ReadTime() (dt time.Time)

      r 的当前位置读取数据并反序列化为一个 time.Time 类型的数据。

      如果反序列化过程中发生错误,则 panic。

      ReadTimeWithoutTag 方法

      1. func (r *Reader) ReadTimeWithoutTag() (t time.Time)

      r 的当前位置读取数据并反序列化为一个 time.Time 类型的数据。该方法假设序列化标记已被读取,并且其值为 TagTime

      如果反序列化过程中发生错误,则 panic。

      ReadUint 方法

      1. func (r *Reader) ReadUint() uint64

      r 的当前位置读取数据并反序列化为一个 uint64 类型的数据。

      如果反序列化过程中发生错误,则 panic。

      ReadValue 方法

      1. func (r *Reader) ReadValue(v reflect.Value)

      r 的当前位置读取数据并反序列化到参数 v 中。反序列化的数据类型跟 v 中所包含的类型一致。

      如果反序列化过程中发生错误,则 panic。

      Reset 方法

      1. func (r *Reader) Reset()

      将反序列化的引用计数器重置。

      Unserialize 方法

      r 的当前位置读取数据并反序列化结果到 中,p 是一个指向结果的指针。