sum types are my number one. the frustrating part is that it almost has it with type sets in interfaces, which you can use in function signatures, but you can't use them in definitions of other types.
example, given an interface that is scoped to 4 types:
type PlayingCardSuit interface {
Diamond | Spade | Heart | Club
}
1. A error return syntax like =? In rust.
2. Sum types
3. Pattern matching
There is a lot of boilerplate but I've found libraries like Uber/fx help a TON.
Also I've been doing a lot of codegen using a library that can parse a package and return an ast API whose name escapes me right now...
Overall I think the language is in a great place with generics added