Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Append ¶
Append will append the mangled form of input value 'a' to buffer 'b'. See mangler.String() for more information on mangled output.
func Register ¶
Register will register the given Mangler function for use with vars of given runtime type. This allows registering performant manglers for existing types not implementing Mangled (e.g. std library types). NOTE: panics if there already exists a Mangler function for given type. Register on init().
func String ¶
String will return the mangled format of input value 'a'. This mangled output will be unique for all default supported input types during a single runtime instance. Uniqueness cannot be guaranteed between separate runtime instances (whether running concurrently, or the same application running at different times).
The exact formatting of the output data should not be relied upon, only that it is unique given the above constraints. Generally though, the mangled output is the binary formatted text of given input data.
Uniqueness is guaranteed for similar input data of differing types (e.g. string("hello world") vs. []byte("hello world")) by prefixing mangled output with the input data's runtime type pointer.
Default supported types include: - string - bool - int,int8,int16,int32,int64 - uint,uint8,uint16,uint32,uint64,uintptr - float32,float64 - complex64,complex128 - arbitrary structs - all type aliases of above - all pointers to the above - all slices / arrays of the above
Types ¶
type Mangler ¶
Mangler is a function that will take an input interface value of known type, and append it in mangled serialized form to the given byte buffer. While the value type is an interface, the Mangler functions are accessed by the value's runtime type pointer, allowing the input value type to be known.