diff options
author | Russ Cox <rsc@golang.org> | 2009-04-06 21:28:04 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-04-06 21:28:04 -0700 |
commit | f460c5c233a8ed87c2b6e5efc7202794e84022f1 (patch) | |
tree | 96684cc7d61274ff46cca10667e8d30a6af67a2c /src/lib/fmt/print.go | |
parent | 71a88a79ac75ccaca1986af7d3616563cbb2f74f (diff) | |
download | golang-f460c5c233a8ed87c2b6e5efc7202794e84022f1.tar.gz |
add method Value() Value to InterfaceValue.
use Value() in print to print underlying value
from interface.
before:
package main
import "fmt"
func main() {
x := []interface{} {1, "hello", 2.5};
fmt.Println(x[0], x[1], x[2], x);
}
1 hello 2.5 [<non-nil interface> <non-nil interface> <non-nil interface>]
after:
1 hello 2.5 [1 hello 2.5]
R=r
DELTA=44 (22 added, 16 deleted, 6 changed)
OCL=27139
CL=27141
Diffstat (limited to 'src/lib/fmt/print.go')
-rw-r--r-- | src/lib/fmt/print.go | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/lib/fmt/print.go b/src/lib/fmt/print.go index ca5bec934..5fd230f2c 100644 --- a/src/lib/fmt/print.go +++ b/src/lib/fmt/print.go @@ -451,12 +451,11 @@ func (p *pp) printField(field reflect.Value) (was_string bool) { } p.add('}'); case reflect.InterfaceKind: - inter := field.(reflect.InterfaceValue).Get(); - if inter == nil { + value := field.(reflect.InterfaceValue).Value(); + if value == nil { s = "<nil>" } else { - // should never happen since a non-nil interface always has a type - s = "<non-nil interface>"; + return p.printField(value); } default: s = "?" + field.Type().String() + "?"; |