import "encoding"
encoding包定义了供其它包使用的可以将数据在字节水平和文本表示之间转换的接口。encoding/gob、encoding/json、encoding/xml三个包都会检查使用这些接口。因此,只要实现了这些接口一次,就可以在多个包里使用。标准包内建类型time.Time和net.IP都实现了这些接口。接口是成对的,分别产生和还原编码后的数据。
type BinaryMarshaler interface { MarshalBinary() (data []byte, err error) }
实现了BinaryMarshaler接口的类型可以将自身序列化为binary格式。
type BinaryUnmarshaler interface { UnmarshalBinary(data []byte) error }
实现了BinaryUnmarshaler接口的类型可以将binary格式表示的自身解序列化。
UnmarshalBinary必须可以解码MarshalBinary生成的binary格式数据。本函数可能会对data内容作出修改,所以如果要保持data的数据请事先进行拷贝。
type TextMarshaler interface { MarshalText() (text []byte, err error) }
实现了BinaryMarshaler接口的类型可以将自身序列化为utf-8编码的textual格式。
type TextUnmarshaler interface { UnmarshalText(text []byte) error }
实现了TextUnmarshaler接口的类型可以将textual格式表示的自身解序列化。
UnmarshalText必须可以解码MarshalText生成的textual格式数据。本函数可能会对data内容作出修改,所以如果要保持data的数据请事先进行拷贝。