On Wed, Jan 6, 2021 at 11:31 PM Amit Saha <[email protected]> wrote:
> In the description of context.WithValue(), we have:
>
> The provided key must be comparable and should not be of type string
> or any other built-in type to avoid collisions between packages using
> context. Users of WithValue should define their own types for keys. To
> avoid allocating when assigning to an interface{}, context keys often
> have concrete type struct{}.
>
> I am wondering if someone can explain what exactly comparable means here?
>
> In other languages and Go
> (https://golang.org/ref/spec#Comparison_operators), comparable usually
> means being able to compare two values for equality/greater/lesser.
>
The linked spec section actually contradicts that:
The equality operators == and != apply to operands that are *comparable*.
> The ordering operators <, <=, >, and >= apply to operands that are
> *ordered*.
(emphasis from the spec). So, the definition of "comparable" is "can be
used with == and !=" and what exactly that means is listed below that quote.
Hope that helps
> Thanks,
> Amit.
>
> --
> 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/CANODV3kUmtJvG9Lfys_HXfedwnm54neA6uub6cY1aiz%2B9w5DUA%40mail.gmail.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/CAEkBMfE2jqTT0QC7ykCEgVQPgB-%3DEyYfzz%3D2uDmTTwkMEFcB5Q%40mail.gmail.com.