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// 13// Adding encoding/decoding methods to existing types may constitute a breaking change, 14// as they can be used for serialization in communicating with programs 15// written with different library versions. 16// The policy for packages maintained by the Go project is to only allow 17// the addition of marshaling functions if no existing, reasonable marshaling exists. 18package encoding 19 20// BinaryMarshaler is the interface implemented by an object that can 21// marshal itself into a binary form. 22// 23// MarshalBinary encodes the receiver into a binary form and returns the result. 24type BinaryMarshaler interface { 25 MarshalBinary() (data []byte, err error) 26} 27 28// BinaryUnmarshaler is the interface implemented by an object that can 29// unmarshal a binary representation of itself. 30// 31// UnmarshalBinary must be able to decode the form generated by MarshalBinary. 32// UnmarshalBinary must copy the data if it wishes to retain the data 33// after returning. 34type BinaryUnmarshaler interface { 35 UnmarshalBinary(data []byte) error 36} 37 38// TextMarshaler is the interface implemented by an object that can 39// marshal itself into a textual form. 40// 41// MarshalText encodes the receiver into UTF-8-encoded text and returns the result. 42type TextMarshaler interface { 43 MarshalText() (text []byte, err error) 44} 45 46// TextUnmarshaler is the interface implemented by an object that can 47// unmarshal a textual representation of itself. 48// 49// UnmarshalText must be able to decode the form generated by MarshalText. 50// UnmarshalText must copy the text if it wishes to retain the text 51// after returning. 52type TextUnmarshaler interface { 53 UnmarshalText(text []byte) error 54} 55