One reason I like Golang is that errors are on your face. Sure, it's annoying, but it really helps robustness.
(I like Rust, C, C++ etc. as well.)
(I like Rust, C, C++ etc. as well.)
Like take a look at this pattern:
err := db.Get(&latLong, "SELECT lat, long FROM cities WHERE name = $1", name)
if err == nil {
return latLong, nil
}
latLong, err = fetchLatLong(name)
if err != nil {
return nil, err
}
err = insertCity(db, name, *latLong)
if err != nil {
return nil, err
}
Is it really necessary to have the error handling explicit in this case? Go through any of your go code. I find this kind of error handling is 90% of the error handling I write.If you just append if err != nil blocks everywhere without reasoning about the context you're probably doing it wrong.
Handle(err)