| // Copyright 2013 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Package encoding defines interfaces shared by other packages that |
| // convert data to and from byte-level and textual representations. |
| // Packages that check for these interfaces include encoding/gob, |
| // encoding/json, and encoding/xml. As a result, implementing an |
| // interface once can make a type useful in multiple encodings. |
| // Standard types that implement these interfaces include time.Time and net.IP. |
| // The interfaces come in pairs that produce and consume encoded data. |
| package encoding |
| |
| // BinaryMarshaler is the interface implemented by an object that can |
| // marshal itself into a binary form. |
| // |
| // MarshalBinary encodes the receiver into a binary form and returns the result. |
| type BinaryMarshaler interface { |
| MarshalBinary() (data []byte, err error) |
| } |
| |
| // BinaryUnmarshaler is the interface implemented by an object that can |
| // unmarshal a binary representation of itself. |
| // |
| // UnmarshalBinary must be able to decode the form generated by MarshalBinary. |
| // UnmarshalBinary must copy the data if it wishes to retain the data |
| // after returning. |
| type BinaryUnmarshaler interface { |
| UnmarshalBinary(data []byte) error |
| } |
| |
| // TextMarshaler is the interface implemented by an object that can |
| // marshal itself into a textual form. |
| // |
| // MarshalText encodes the receiver into UTF-8-encoded text and returns the result. |
| type TextMarshaler interface { |
| MarshalText() (text []byte, err error) |
| } |
| |
| // TextUnmarshaler is the interface implemented by an object that can |
| // unmarshal a textual representation of itself. |
| // |
| // UnmarshalText must be able to decode the form generated by MarshalText. |
| // UnmarshalText must copy the text if it wishes to retain the text |
| // after returning. |
| type TextUnmarshaler interface { |
| UnmarshalText(text []byte) error |
| } |