On Sun, Aug 11, 2024 at 5:35 AM 'Brian Candler' via golang-nuts
<[email protected]> wrote:
>
> Are there many instances where interpretation (1) is useful?
Yes.
> I would also observe: if Go implemented case (2) for "==", this doesn't
> prevent the user from implementing case (1) using a separate function, as
> today.
Of course. But it means that people who expect interpretation 1 will
be confused. We want to avoid confusion where possible.
> Supplementary question: does the Go standard library even expose a function
> for case (1), or would you have to do it yourself using e.g.
> unsafe.SliceData? Clearly case (2) is supported via bytes.Equal,
> slices.Equal etc.
if len(a) == 0 {
return (a == nil) == (b == nil)
} else {
return len(a) == len(b) && &a[0] == &b[0]
}
Ian
> On Sunday 11 August 2024 at 05:08:26 UTC+6 Ian Lance Taylor wrote:
>>
>> On Fri, Aug 9, 2024 at 9:03 PM 'Brian Candler' via golang-nuts
>> <[email protected]> wrote:
>> >
>> > I would agree, except there is no == operator defined on slices, and I'm
>> > not really sure why that is. The semantics I would expect are
>> > straightforward: i.e. length is the same, and the first 'len' slice
>> > elements compare as equal, recursively if necessary. (*)
>>
>> There is no == operator on slice types because there are two possible
>> meanings:
>> 1) Two slices are equal if they have the same length and refer to the
>> same underlying array.
>> 2) Two slices are equal if they have the same length and each
>> individual element is itself equal.
>>
>> Because it's not clear which definition of equality people might mean,
>> the language doesn't define ==, and forces people to choose which
>> definition they want in any given situation.
>>
>> Ian
>
> --
> 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/62959bba-5170-4f1a-b8b4-f023a22848cen%40googlegroups.com.
--
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/CAOyqgcWBkSyfvL1kpVk%3DXkOiFPJ3U1_L9tm12P3A0uGGs_FjtA%40mail.gmail.com.