diff --git a/src/reflect/value.go b/src/reflect/value.go index 6e7528ff..3cc9645a 100644 --- a/src/reflect/value.go +++ b/src/reflect/value.go @@ -217,7 +217,15 @@ func (v Value) CanAddr() bool { } func (v Value) Addr() Value { - panic("unimplemented: (reflect.Value).Addr()") + if !v.CanAddr() { + panic("reflect.Value.Addr of unaddressable value") + } + + return Value{ + typecode: pointerTo(v.typecode), + value: unsafe.Pointer(&v.value), + flags: v.flags ^ valueFlagIndirect, + } } func (v Value) CanSet() bool {