For sure. Coq does a decent job, but it's also a complete bear to use. Tradeoffs, as always.
> I continue to identify a confusion in this thread between a property of the languages, and a property of particular code
Go on. The original statement was that C and Go do not have type-safe enums. But there is no evidence of that being the case. The types are safe.
Indeed, the types are limited. An integer type, for example, cannot be further narrowed to only 1-10 in these languages. But the lack of a feature does not imply lack of type-safety. It only implies a lack of a feature.