Yes, that's an option, but it's not nearly as nice as the compiler automatically telling you what's up, nor does it help downstream users of a library that adds a new possibility. They just have to hope the change is communicated to them.
> Never mind the fact that wildcard clauses exist and so this problem comes up in ML/Haskell/etc as well, since the compiler will consider those patterns exhaustive.
This is an explicit vs. implicit situation: by using a wildcard, the programmer has explicitly chosen to give up some compile-time assistance, whereas Go implicitly makes this choice for the programmer.
> Go already has this. It's called type-switch:
... I don't see how a facetious response like this is at all helpful. The downsides of type-switch are exactly what we're already discussing.
> traditional algebraic data types impose order on to fields, which is an undesirable feature IMHO
Go is its own language, and can choose to adopt/adapt features to suit its idioms. Referring everything back to how "traditional ADTs" work seems silly when there's trivial tweaks that fit Go better.
> However, field dispatch loses the nice order-independence attribute.
I don't know what you mean by this (I can guess, but I don't see how it relates to naming fields in patterns), could you rephrase?