type decoder … // newDecoder returns a new decoder that reads values from in. The input is // expected to be in the given byte order. func newDecoder(in io.Reader, order binary.ByteOrder, fds []int) *decoder { … } // align aligns the input to the given boundary and panics on error. func (dec *decoder) align(n int) { … } // Calls binary.Read(dec.in, dec.order, v) and panics on read errors. func (dec *decoder) binread(v interface{ … } func (dec *decoder) Decode(sig Signature) (vs []interface{ … } func (dec *decoder) decode(s string, depth int) interface{ … } // sigByteSize tries to calculates size of the given signature in bytes. // // It returns zero when it can't, for example when it contains non-fixed size // types such as strings, maps and arrays that require reading of the transmitted // data, for that we would need to implement the unread method for Decoder first. func sigByteSize(sig string) int { … } type FormatError … func (e FormatError) Error() string { … }