code: func printableValue(v reflect.Value) (interface{}, bool) {
  	if v.Kind() == reflect.Ptr {
  		v, _ = indirect(v) // fmt.Fprint handles nil.
  	}
  	if !v.IsValid() {
  		return "<no value>", true
  	}
  
  	if !v.Type().Implements(errorType) && !v.Type().Implements(fmtStringerType) {
  		if v.CanAddr() && (reflect.PtrTo(v.Type()).Implements(errorType) || reflect.PtrTo(v.Type()).Implements(fmtStringerType)) {
  			v = v.Addr()
  		} else {
  			switch v.Kind() {
  			case reflect.Chan, reflect.Func:
  				return nil, false
  			}
  		}
  	}
  	return v.Interface(), true
  }
docs: // printableValue returns the, possibly indirected, interface value inside v that
  // is best for a call to formatted printer.