print the value using (in effect) %v when Printf is given mismatched args for its format
Printf("%s", 2) gives %s(int=2)

R=rsc
DELTA=12  (10 added, 0 deleted, 2 changed)
OCL=34042
CL=34044
diff --git a/src/pkg/fmt/print.go b/src/pkg/fmt/print.go
index bb1030e..e5177ef 100644
--- a/src/pkg/fmt/print.go
+++ b/src/pkg/fmt/print.go
@@ -700,14 +700,20 @@
 
 			default:
 			badtype:
-				s = "%" + string(c) + "(" + field.Type().String() + ")%";
+				s = "%" + string(c) + "(" + field.Type().String() + "=";
+				p.addstr(s);
+				p.printField(field);
+				s= ")%";
 		}
 		p.addstr(s);
 	}
 	if fieldnum < v.NumField() {
 		p.addstr("?(extra ");
 		for ; fieldnum < v.NumField(); fieldnum++ {
-			p.addstr(getField(v, fieldnum).Type().String());
+			field := getField(v, fieldnum);
+			p.addstr(field.Type().String());
+			p.addstr("=");
+			p.printField(field);
 			if fieldnum + 1 < v.NumField() {
 				p.addstr(", ");
 			}