https://go.dev/ref/spec#Comparison_operators
• Pointer types are comparable. Two pointer values are equal if they point
to the same variable or if both have value nil. Pointers to distinct zero-size
variables may or may not be equal.
Another example (Go Playground <https://go.dev/play/p/3uPH3rAG2XN>):
func f4() {
var (
a struct{}
b int
aa = (*int)(unsafe.Pointer(&a))
ba = (*int)(unsafe.Pointer(&b))
eq = aa == ba
)
println("&a:", aa, reflect.TypeOf(aa).String())
println("&b:", ba, reflect.TypeOf(ba).String())
println("&a == &b:", eq)
}
&a: 0xc0000466f8 *int
&b: 0xc0000466f8 *int
&a == &b: false
We do not have “pointers to distinct zero-size variables”, only one pointer
derived from a pointer to a zero-sized variable.
I don’t want to be stubborn. What would be the issue with at least adding a FAQ
entry? I could open a PR suggesting something, although I’m not a native
speaker and might not exactly hit the tone of the document.
> Am 20.06.2024 um 12:37 schrieb Jan Mercl <[email protected]>:
>
> On Thu, Jun 20, 2024 at 12:28 PM Oliver Eikemeier
> <[email protected]> wrote:
>
>> It mentions “pointers” (plural) to zero-sized variables, but for this
>> behavior it is sufficient when only one pointer derives from a pointer to a
>> zero-sized variable, as demonstrated in the example below.
>
> The plural is there because the specification discusses all such
> pointers, not a particular case.
>
> The wording is IMO correct and clear. All/any pointers (plural) to
> zero sized objects may produce any/unpredictable result in comparison
> operations. Relying on the outcome is a bug, because the specs
> explicitly say otherwise.
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/C02D6616-0B77-4F6F-8597-EFA355BF17E1%40fillmore-labs.com.