I agree that operators in contracts and the proposed generics don't seem to
mesh well. Your proposal would enable the use of operators in interfaces in an
easy way.
However, personally I think that perhaps we don't need operators at all.
Suppose I was to implement a generic btrie or such today in Go1. How would I do
it? I would use an interface for the data in nodes like this:
BtrieData interface {
Equals(data BtrieData) bool
Less(data BtrieData) bool
AssignTo(target *BtrieData) error
}
No operators, just member functions.
The only downside to this is for primitive types which will need a wrapper
types. Implementing such a wrapper type is pretty easy, and with generics, the
compiler could likely optimize generic wrapper types.
Seeing how complex the interaction between generics and operators would become,
I would simply drop them an use interfaces as they are now as the contract
type. For niw, I don't see what complelling benefits allowing operators in
generic contracts would bring.
--
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].
For more options, visit https://groups.google.com/d/optout.