You can do dynamic tagged values in Go, too. It's called interface{} and everyone hates it. So this does not respond to the parent's point.
What I am saying is if you have static types (good) but don't do anything else, you loose sums (bad). You then need to add (back) sums.