
Should I Go? The Pros and Cons of Using Go Programming Language - franrull
https://bugfender.com/blog/go-pros-cons-using-go-programming-language/
======
baystep
Coming from a Java background (as far as back-end API development goes), I've
pretty much fallen in love with Go. I will definitely be using it on all
future projects of my own. That being said, my pros are numerous and my cons
are limited. So far they might be:

\- A bit too much boilerplate. The infamous "if err != nil" statements will
get a bit tedious. BUT! This keeps you on your toes, not in the same way as
Java's "NullPointerException" explosion keeps you on your toes.

\- I agree with the 3rd party libraries comment. Any cool library I find
spends 2/3rds of the README talking about benchmarks. Like we get it, Go is
fast. Good luck finding any actual implementation besides "read the docs". And
sure someone could write examples, if the package lived long enough.

\- I wish there was a tad bit speedier development. The compiler is _QUICK_ ,
but for something like server development I find myself having keep the
command line going, use the "go install" command, then run the exe (windows)
from the bin folder (I put it on the Path just to save my life a bit), then
test, then kill the server, and repeat. Not great for quick prototyping. In
comparison my other web techs have live-reloads, where saving re-compiles,
kills the current process, and starts. I'm sure I could rig one up, so this is
probably just a nuance of my own early travels in Go.

~~~
aleixventa
For the live-reloads there are a few options. We use gin
([https://github.com/codegangsta/gin](https://github.com/codegangsta/gin)) in
some projects and it works nicely but for projects with a lot of files/folders
it doesn't work that well. Another option we have tried is CompilerDaemon
([https://github.com/githubnemo/CompileDaemon](https://github.com/githubnemo/CompileDaemon))
and it also works quite nicely but has the same problem when you have a lot of
files/folders.

So, I agree with you that this is something that should be improved to make
our development easier.

