Writer

NewWriter 构造函数

  1. func NewWriter(simple bool, buf ...byte) (w *Writer)

simple 如果为 true,则不使用引用方式序列化,通常在序列化的数据中不包含引用类型数据时,设置为 true 可以加快速度。当包含引用类型数据时,需要设置为 false(即默认值),尤其是当引用数据中包括递归数据时,如果不使用引用方式,会陷入死循环导致堆栈溢出的错误。

buf 为初始写入的数据。

Simple 字段

同上面的 simple 参数。

Reset 方法

  1. func (w *Writer) Reset()

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

Serialize 方法

  1. func (w *Writer) Serialize(v interface{}) *Writer

序列化数据 v。其中 v 为任意 hprose 支持的类型。

WriteBigFloat 方法

  1. func (w *Writer) WriteBigFloat(bf *big.Float)

序列化一个 *big.Float 数据,以浮点数方式序列化。

WriteBigInt 方法

  1. func (w *Writer) WriteBigInt(bi *big.Int)

序列化一个 *big.Int 数据,以长整数类型序列化。

WriteBigRat 方法

  1. func (w *Writer) WriteBigRat(br *big.Rat)

序列化一个 *big.Rat 数据,如果该数字为整数,则以长整数类型序列化,否则以字符串类型序列化。

WriteBool 方法

  1. func (w *Writer) WriteBool(b bool)

序列化一个 bool 类型数据。

WriteBytes 方法

  1. func (w *Writer) WriteBytes(bytes []byte)

序列化一个 []byte 类型数据,以二进制串类型数据序列化。

WriteComplex128 方法

  1. func (w *Writer) WriteComplex128(c complex128)

序列化一个 complex128 类型数据。如果虚部为 0,则按照浮点数类型序列化,否则按照包含两个浮点数的元素的数组序列化。

WriteComplex64 方法

  1. func (w *Writer) WriteComplex64(c complex64)

序列化一个 complex64 类型数据。如果虚部为 0,则按照浮点数类型序列化,否则按照包含两个浮点数的元素的数组序列化。

WriteFloat 方法

  1. func (w *Writer) WriteFloat(f float64, bitSize int)

序列化一个浮点数。如果 f 原本是 float32bitSize 的值为 32,否则 bitSize 的值为 64

WriteInt 方法

  1. func (w *Writer) WriteInt(i int64)

序列化一个整数 i。如果 iint32 的范围内,则按照 hprose 的整数类型序列化,否则按照 hprose 的长整数类型序列化。

WriteList 方法

  1. func (w *Writer) WriteList(lst *list.List)

序列化一个 *list.List 类型的数据。按照 hprose 的数组列表类型序列化。

WriteNil 方法

  1. func (w *Writer) WriteNil()

序列化一个 nil 值。按照 hprose 的 Null 类型序列化。

WriteSlice 方法

  1. func (w *Writer) WriteSlice(slice []reflect.Value)

序列化一个 []reflect.Value 类型的数据,按照 hprose 的数组列表类型序列化。

WriteString 方法

  1. func (w *Writer) WriteString(str string)

序列化一个 string 类型的数据。如果 str 是 UTF8 编码,则按照字符串序列化,否则按照二进制串序列化。

WriteStringSlice 方法

  1. func (w *Writer) WriteStringSlice(slice []string)

序列化一个 []string 类型的数据。序列化为 hprose 的数组列表类型。

WriteTime 方法

  1. func (w *Writer) WriteTime(t *time.Time)

序列化一个 *time.Time 类型的数据。按照 hprose 的日期,时间或者日期时间类型序列化。

WriteTuple 方法

  1. func (w *Writer) WriteTuple(tuple ...interface{})

将多个数据按照 hprose 的数组列表类型序列化。

WriteUint 方法

  1. func (w *Writer) WriteUint(i uint64)

序列化一个无符号整数 i。如果 i 范围在 int32 范围内,则按照整数类型序列化,否则按照长整数类型序列化。

WriteValue 方法

  1. func (w *Writer) WriteValue(v reflect.Value)

序列化一个 reflect.Value 类型的数据。