type Handle … type Handler … // Register records the existence of a message type and returns a Handle that // can be used in the Encoder's EncodeMessageType method to create such // messages. The prefix of the name should be the package path followed by // an optional disambiguating string. // Register will panic if a handle for the same name was already registered. func Register(name string, handler Handler) Handle { … } const msgVars … const msgFirst … const msgRaw … const msgString … const msgAffix … const numInternal … const prefix … var mutex … var names … var handlers … func init() { … } var ErrIncomplete … var ErrNoMatch … type Message … // Compile converts a Message to a data string that can be stored in a Catalog. // The resulting string can subsequently be decoded by passing to the Execute // method of a Decoder. func Compile(tag language.Tag, macros Dictionary, m Message) (data string, err error) { … } type FirstOf … // Compile implements Message. func (s FirstOf) Compile(e *Encoder) error { … } type Var … var errIsVar … // Compile implements Message. // // Note that this method merely registers a variable; it does not create an // encoded message. func (v *Var) Compile(e *Encoder) error { … } type Raw … // Compile implements Message. func (r Raw) Compile(e *Encoder) (err error) { … } type String … // Compile implements Message. It parses the placeholder formats and returns // any error. func (s String) Compile(e *Encoder) (err error) { … } type Affix … // Compile implements Message. func (a Affix) Compile(e *Encoder) (err error) { … }