mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
print array (not just *array) using %v
TBR=rsc DELTA=34 (33 added, 0 deleted, 1 changed) OCL=21718 CL=21718
This commit is contained in:
parent
eb32228627
commit
b0d62676d2
2 changed files with 34 additions and 1 deletions
|
|
@ -305,6 +305,14 @@ func getArrayPtr(v reflect.Value) (val reflect.ArrayValue, ok bool) {
|
|||
return nil, false;
|
||||
}
|
||||
|
||||
func getArray(v reflect.Value) (val reflect.ArrayValue, ok bool) {
|
||||
switch v.Kind() {
|
||||
case reflect.ArrayKind:
|
||||
return v.(reflect.ArrayValue), true;
|
||||
}
|
||||
return nil, false;
|
||||
}
|
||||
|
||||
// Convert ASCII to integer. n is 0 (and got is false) if no number present.
|
||||
|
||||
func parsenum(s string, start, end int) (n int, got bool, newi int) {
|
||||
|
|
@ -365,7 +373,7 @@ func (p *P) printField(field reflect.Value) (was_string bool) {
|
|||
if v, ok := getPtr(field); v == 0 {
|
||||
s = "<nil>"
|
||||
} else {
|
||||
// pointer to array?
|
||||
// pointer to array? (TODO(r): holdover; delete?)
|
||||
if a, ok := getArrayPtr(field); ok {
|
||||
p.addstr("&[");
|
||||
for i := 0; i < a.Len(); i++ {
|
||||
|
|
@ -380,6 +388,17 @@ func (p *P) printField(field reflect.Value) (was_string bool) {
|
|||
s = p.fmt.uX64(uint64(v)).str();
|
||||
}
|
||||
}
|
||||
case reflect.ArrayKind:
|
||||
if a, ok := getArray(field); ok {
|
||||
p.addstr("[");
|
||||
for i := 0; i < a.Len(); i++ {
|
||||
if i > 0 {
|
||||
p.addstr(" ");
|
||||
}
|
||||
p.printField(a.Elem(i));
|
||||
}
|
||||
p.addstr("]");
|
||||
}
|
||||
case reflect.StructKind:
|
||||
p.add('{');
|
||||
v := field.(reflect.StructValue);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue