so does this mean there are no generic structs in generic go?
type X[T any] struct{}
func (x *X[T]) Method() {}
just fine. What you can't do is func (x *X[T]) Method[T2 any]() {}The rationale seems to me that generics be functions first (ok, procedural), and not complecting it with objects and OO too much, whatever that mix could mean..
Differences:
- Methods must be defined in the same package as the receiver.
- Methods can be used to implement interfaces.
- Methods can be discovered dynamically by inspecting the type of the receiver (either through reflection or with a dynamic cast).