utf8: add InString routines for decoding in strings

reflect: add InterfaceValue.Get(), remove Empty
strconv: add Quote, CanBackquote
fmt:
	* %q go-quoted " string
	* %#q go-quoted ` string if possible, " string otherwise
	* %x hexadecimal string
	* anywhere a string is okay, *[]byte is okay
	* flags # 0 - + space
	* print value inside interface, not interface itself
	* tests

R=r
DELTA=756  (597 added, 121 deleted, 38 changed)
OCL=19888
CL=19916
This commit is contained in:
Russ Cox 2008-11-24 13:04:27 -08:00
parent 508277debe
commit b65a930453
14 changed files with 636 additions and 158 deletions

View file

@ -283,3 +283,14 @@ export func TestAll(tt *testing.T) { // TODO(r): wrap up better
println(a[i]);
}
}
export func TestInterfaceGet(t *testing.T) {
var inter struct { e interface{ } };
inter.e = 123.456;
v1 := reflect.NewValue(&inter);
v2 := v1.(reflect.PtrValue).Sub().(reflect.StructValue).Field(0);
assert(v2.Type().String(), "interface { }");
i2 := v2.(reflect.InterfaceValue).Get();
v3 := reflect.NewValue(i2);
assert(v3.Type().String(), "float");
}