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. 12package 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. 18type 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. 28type 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. 36type 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. 46type TextUnmarshaler interface { 47 UnmarshalText(text []byte) error 48} 49