comparable
is the constraint for types that support equality operators ==
and !=
. The language spec defines this in Type constraints.
Notably, this includes anything that can be used as a map key, including arrays, structs with comparable fields but not interfaces.
It is true that in the Go language specifications, the comparison operators include order operators as (<
, >
, <=
, >=
). This choice of terminology probably is what confuses you. However the specs also disambiguate:
The equality operators
==
and!=
apply to operands that are comparable. The ordering operators<
,<=
,>
, and>=
apply to operands that are ordered.
In Go 1.18 the available constraint that supports the order operators such as >
and <
is constraints.Ordered
1:
type Ordered interface {
Integer | Float | ~string
}
1: note that the package golang.org/x/exp
is experimental. Its contents aren’t guaranteed to be backwards compatible with new Go releases, but you can always copy-paste the definitions you need into your own code
CLICK HERE to find out more related problems solutions.