type encodeFuncs … var decodingStructTypeCache … var encodingStructTypeCache … var encodeFuncCache … var typeInfoCache … type specialType … const specialTypeNone … const specialTypeUnmarshalerIface … const specialTypeEmptyIface … const specialTypeIface … const specialTypeTag … const specialTypeTime … type typeInfo … func newTypeInfo(t reflect.Type) *typeInfo { … } type decodingStructType … type multierror … func (m multierror) Error() string { … } func getDecodingStructType(t reflect.Type) *decodingStructType { … } type encodingStructType … func (st *encodingStructType) getFields(em *encMode) fields { … } type bytewiseFieldSorter … func (x *bytewiseFieldSorter) Len() int { … } func (x *bytewiseFieldSorter) Swap(i, j int) { … } func (x *bytewiseFieldSorter) Less(i, j int) bool { … } type lengthFirstFieldSorter … func (x *lengthFirstFieldSorter) Len() int { … } func (x *lengthFirstFieldSorter) Swap(i, j int) { … } func (x *lengthFirstFieldSorter) Less(i, j int) bool { … } func getEncodingStructType(t reflect.Type) (*encodingStructType, error) { … } func getEncodingStructToArrayType(t reflect.Type, flds fields) (*encodingStructType, error) { … } func getEncodeFunc(t reflect.Type) (encodeFunc, isEmptyFunc) { … } func getTypeInfo(t reflect.Type) *typeInfo { … } func hasToArrayOption(tag string) bool { … }