From d930a9ba1600b49b14ad9ebd0abe74cd41b9185e Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Thu, 30 Aug 2018 02:20:36 +0200 Subject: [PATCH] Implement print() for interface values --- src/runtime/print.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/runtime/print.go b/src/runtime/print.go index 91fcd1e6..e341c071 100644 --- a/src/runtime/print.go +++ b/src/runtime/print.go @@ -34,6 +34,14 @@ func printint8(n int8) { } } +func printuint16(n uint16) { + printuint32(uint32(n)) +} + +func printint16(n uint16) { + printint32(int32(n)) +} + func printuint32(n uint32) { // TODO: don't recurse, but still be compact (and don't divide/mod // more than necessary). @@ -84,7 +92,13 @@ func printitf(msg interface{}) { case string: print(msg) default: - print("???") + // cast to underlying type + itf := *(*_interface)(unsafe.Pointer(&msg)) + putchar('(') + print(itf.typecode) + putchar(':') + print(itf.value) + putchar(')') } }