

Why Go will kick ass in your next project - traskjd
http://raygun.io/blog/2013/11/5-reasons-go-will-kick-ass-in-your-next-project/

======
ancarda
Go has been great to learn. I was initially very annoyed that Go has no
classes but I've found interfaces to be extremely powerful. I had two wow
moments:

1\. When I realized I could write a http response using anything that accepted
an io.Writer (a struct with a compatible Write() method). I can use fmt.Fprint
and pass http.ResponseWriter as the first parameter. Need a new line? Don't
concat an \n, just use Fprintln.

2\. Go has a number of interfaces such as sql.DB (database/sql). Even though
Go doesn't provide SQL access directly, it standardizes SQL access and means
if a library fizzles out or I write a new one from scratch, I can drop mine
into an existing project with almost zero changes -- This meant choosing an
SQL driver was very easy, I was reassured that if I picked the wrong one,
fixing that would be easy as long as I picked one that built upon sql.DB.

Go seems to be very cleanly designed.

I have yet to have a wow moment with slices. Looking forward to it!

------
nickpresta
Site is down for me (timeout). Here is the Google cache link:
[http://webcache.googleusercontent.com/search?sclient=chrome-...](http://webcache.googleusercontent.com/search?sclient=chrome-
search&espv=213&es_sm=91&q=cache%3Araygun.io%2Fblog%2F2013%2F11%2F5-reasons-
go-will-kick-ass-in-your-next-project%2F&oq=&gs_l=chrome-
search.3...0.0.1.3161.0.0.0.0.0.0.0.0..0.0....0...1c..25.chrome-
search..0.0.0.qvXCUc4w3CQ)

~~~
traskjd
Should be sorted now - sorry about that. Thanks for sharing the cache link
though :-)

------
mattgreenrocks
Aside: many of these articles extol the virtues of static linking. I'm pleased
that it is being re-discovered via Go. It was always unfairly overlooked from
a deployment standpoint of desktop apps ("what if we need to upgrade just
_this_ library for a security fix?").

------
alexeyshurygin
What's the point of single binary when you only do deployment on your own
preconfigured server machine. That really kicks ass.

~~~
sacado2
If you only deploy on a single node, there is no obvious advantage (beside not
fearing an update of a shared library might break your code). But if you
deploy on a cluster, you might have an advantage, especially if that cluster
is somewhat heterogenous (not the same version of OS, not the same libraries,
etc.).

