reflect.Value.UnsafePointer() is probably not safer than using unsafe directly, assuming you're using unsafe in a way that doesn't break the rules. Reflect is doing effectively the same unsafe.Pointer conversion under the hood [1]. It's certainly easier on the eyes, in my opinion, though.
[1] - https://cs.opensource.google/go/go/+/refs/tags/go1.20.6:src/reflect/value.go;l=103 On Tuesday, July 18, 2023 at 11:25:42 AM UTC-4 Stephen Illingworth wrote: > > I like that. I think it's is quite a smart way of doing it, > > I don't think you need to check both maps when choosing a key. Once you've > found a candidate key in one map, you can test the other map and if it > *does* exist then the two maps aren't equal. You've then saved the > insertion and deletion step. I would also prefer to use rand.Int() rather > than a linear search. > > https://go.dev/play/p/ftBGgQMuvvC > > > On Tuesday, 18 July 2023 at 15:35:38 UTC+1 Jochen Voss wrote: > >> Dear all, >> >> To implement the "eq" operator in a simple PostScript interpreter, I need >> to determine whether two maps are the same object. >> >> This can be done by adding a new element to one map, and checking whether >> the new entry also appears in the second map, but as you can imagine, the >> resulting code is quite ugly. See https://go.dev/play/p/AfembYDt3en for >> an implementation of this idea. >> >> Is there a better way? >> >> Many thanks, >> Jochen >> >> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/a2c2f09c-7cfe-476f-b29d-d0f131d600a5n%40googlegroups.com.