var errorType … var fmtStringerType … // Indirect returns the item at the end of indirection, and a bool to indicate if it's nil. // We indirect through pointers and empty interfaces (only) because // non-empty interfaces have methods we might need. func Indirect(v reflect.Value) (rv reflect.Value, isNil bool) { … } // PrintableValue returns the, possibly indirected, interface value inside v that // is best for a call to formatted printer. func PrintableValue(v reflect.Value) (interface{ … }