1 // Copyright 2013 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Package encoding defines interfaces shared by other packages that 6 // convert data to and from byte-level and textual representations. 7 // Packages that check for these interfaces include encoding/gob, 8 // encoding/json, and encoding/xml. As a result, implementing an 9 // interface once can make a type useful in multiple encodings. 10 // Standard types that implement these interfaces include time.Time and net.IP. 11 // The interfaces come in pairs that produce and consume encoded data. 12 package encoding 13 14 // BinaryMarshaler is the interface implemented by an object that can 15 // marshal itself into a binary form. 16 // 17 // MarshalBinary encodes the receiver into a binary form and returns the result. 18 type BinaryMarshaler interface { 19 MarshalBinary() (data []byte, err error) 20 } 21 22 // BinaryUnmarshaler is the interface implemented by an object that can 23 // unmarshal a binary representation of itself. 24 // 25 // UnmarshalBinary must be able to decode the form generated by MarshalBinary. 26 // UnmarshalBinary must copy the data if it wishes to retain the data 27 // after returning. 28 type BinaryUnmarshaler interface { 29 UnmarshalBinary(data []byte) error 30 } 31 32 // TextMarshaler is the interface implemented by an object that can 33 // marshal itself into a textual form. 34 // 35 // MarshalText encodes the receiver into UTF-8-encoded text and returns the result. 36 type TextMarshaler interface { 37 MarshalText() (text []byte, err error) 38 } 39 40 // TextUnmarshaler is the interface implemented by an object that can 41 // unmarshal a textual representation of itself. 42 // 43 // UnmarshalText must be able to decode the form generated by MarshalText. 44 // UnmarshalText must copy the text if it wishes to retain the text 45 // after returning. 46 type TextUnmarshaler interface { 47 UnmarshalText(text []byte) error 48 } 49