From 79930a209c669fd1eaeef34fdd45b12165fcd86d Mon Sep 17 00:00:00 2001 From: Damian Gryski Date: Tue, 28 Feb 2023 10:57:38 -0800 Subject: [PATCH] reflect: add Addr() --- src/reflect/value.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 {