I argued with Rob Pike on an internal Google mailing list about this before the language came out but he's a very dogmatic and impolite person who's no fun to discuss with.
The problem is many-fold!
If you don't handle errors, they are invisibly thrown away. If a function or method that previously couldn't cause an error now can cause an error, you have to find all the places it is called and change them. And if a function called at the "bottom" of your code starts to have the ability to cause errors, you need to add error handling all the way up!
I think of myself as an engineer. Once there's an error and I can't handle it, I want my program to die by default, unless someone calling me knows how to handle it.
Under no circumstances do I want a program to silently swallow an error and continue.
Pike did not explain how this was wrong, and used words like "lazy" for the idea of "preventing invisible errors".
The result is that your typical Go program is full of endlessly repetitive error handling code, and yet in practice Go programs do a worse job of handling errors than, say, a well-written Python program, because coders spend so much time doing the bare minimum to handle errors that they are unwilling to throw more time at the error handling area!