How about starting with old features that it are missing, since Go is literally decades behind PL research?
- Parametric polymorphism (plus constraints e.g. in the form of type classes).
- Algebraic data types
- Pattern matching (with non-exhaustiveness checks).
- Enforcing purity via the type system.
- No null pointers.
No, these are not esoteric Haskell features, but have been around in ML since the 70ies. Also, the claim that Go's designers want to keep the language simple is not a strong argument. A language such as ML is simple.
Also, many old(er) imperative languages adopted some of these type system features, such as Ada, C++, Java, and D.