You can use sum types without pattern matching and vice versa, but you are absolutely right that they synergies well.
I don't know enough about Golang: do you know whether it's possible to add pattern matching with destructuring as a fairly shallow syntactic sugar?
Generics were a much bigger change to the underlying language (and so would be Rust-like lifetimes, or even immutability); but pattern matching seems like something that should be relatively easy to add with only local repercussions?
https://kranfix.medium.com/pattern-matching-in-golang-195c73...