type textWriter … // WithValues implements LogSink.WithValues. The old key/value pairs are // assumed to be well-formed, the new ones are checked and padded if // necessary. It returns a new slice. func WithValues(oldKV, newKV []interface{ … } // MergeKVs deduplicates elements provided in two key/value slices. // // Keys in each slice are expected to be unique, so duplicates can only occur // when the first and second slice contain the same key. When that happens, the // key/value pair from the second slice is used. The first slice must be well-formed // (= even key/value pairs). The second one may have a missing value, in which // case the special "missing value" is added to the result. func MergeKVs(first, second []interface{ … } type Formatter … type AnyToStringFunc … // MergeKVsInto is a variant of MergeKVs which directly formats the key/value // pairs into a buffer. func (f Formatter) MergeAndFormatKVs(b *bytes.Buffer, first, second []interface{ … } func MergeAndFormatKVs(b *bytes.Buffer, first, second []interface{ … } const missingValue … // KVListFormat serializes all key/value pairs into the provided buffer. // A space gets inserted before the first pair and between each pair. func (f Formatter) KVListFormat(b *bytes.Buffer, keysAndValues ...interface{ … } func KVListFormat(b *bytes.Buffer, keysAndValues ...interface{ … } func KVFormat(b *bytes.Buffer, k, v interface{ … } // formatAny is the fallback formatter for a value. It supports a hook (for // example, for YAML encoding) and itself uses JSON encoding. func (f Formatter) formatAny(b *bytes.Buffer, v interface{ … } func formatAsJSON(b *bytes.Buffer, v interface{ … } // StringerToString converts a Stringer to a string, // handling panics if they occur. func StringerToString(s fmt.Stringer) (ret string) { … } // MarshalerToValue invokes a marshaler and catches // panics. func MarshalerToValue(m logr.Marshaler) (ret interface{ … } // ErrorToString converts an error to a string, // handling panics if they occur. func ErrorToString(err error) (ret string) { … } func writeTextWriterValue(b *bytes.Buffer, v textWriter) { … } func writeStringValue(b *bytes.Buffer, v string) { … }