Not C. C errors are different since they are simply numbers.
And spoiler alert, every language propagates errors. Sometimes automatically via exception handling, somewhat simply by returning error values.
rust does this too.
Matter fact, even javascript might be creeping toward this model of explicit error propagation soon.
The problem is that idiomatic Go reuses err for multiple calls. So if you already have one call and check err after, it counts as used, and forgetting to check it on subsequent calls is not flagged.
Easily 60-70% of all go code is about propagating errors to the caller directly.