It's true that the structures are very similar, but we need a way to distinguish the different types. Granted, it's arguable whether it's better to use different types or some sort of "type" property on a common structure instead. In a dynamically typed language I'd definitely lean towards different types. In a statically typed language I'm not so sure. Go is a bit of a hybrid though, and I'm inclined to see how using types for this plays out.