# Printing
+There are four families of printing functions defined by their output destination.
+[Print], [Println] and [Printf] write to [os.Stdout];
+[Sprint], [Sprintln] and [Sprintf] return a string;
+[Fprint], [Fprintln] and [Fprintf] write to an [io.Writer]; and
+[Append], [Appendln] and [Appendf] append the output to a byte slice.
+
+The functions within each family do the formatting according to the end of the name.
+Print, Sprint, Fprint and Append use the default format for each argument,
+adding a space between operands when neither is a string.
+Println, Sprintln, Fprintln and Appendln always add spaces and append a newline.
+Printf, Sprintf, Fprintf and Appendf use a sequence of "verbs" to control the formatting.
+
The verbs:
General:
# Explicit argument indexes
-In [Printf], [Sprintf], and [Fprintf], the default behavior is for each
+In [Printf], [Sprintf], [Fprintf], and [Appendf], the default behavior is for each
formatting verb to format successive arguments passed in the call.
However, the notation [n] immediately before the verb indicates that the
nth one-indexed argument is to be formatted instead. The same notation
// Append formats using the default formats for its operands, appends the result to
// the byte slice, and returns the updated slice.
+// Spaces are added between operands when neither is a string.
func Append(b []byte, a ...any) []byte {
p := newPrinter()
p.doPrint(a)