Ask HN: What is Go really good for?

2 points by aligajani ↗ HN
I want to learn Go but I need to visualize a real-world use case. Why should I use it instead of X, Y or Z. What do you use it for? Please supply examples.

7 comments

[ 3.1 ms ] story [ 25.1 ms ] thread
It depends on what X,Y and Z are.

What you may like about go if you come from:

python/ruby: go is faster and allows you to write concurrent code php/js: go is faster, concurrent, and its designers were competent c/c++: go is simpler and prevents some common mistakes, compiles faster java: go is faster and simpler. garbage collection is less of a problem rust: go is simpler, compiles faster, io/task switching might be faster functional languages: go is simpler, for some its faster/more predictable

What you may not like if you are coming from:

python/ruby: go is verbose, you'll need much more code to express the same thing. Many libraries/frameworks are missing. more advanced concepts will be hard/impossible to express in elegant way. Long list of language features is missing. php/js: can't think of anything, everything is better c/c++: no access to c/c++ libraries, many language features missing. You cannot write operating system in go. It has GC java: no access to java libraries, lot of missing language and platform features, verbosity rust: lot of missing language features, verbosity, sloppy attitude to code correctness and safety, GC, slower generated code functional languages: Any functional language features are missing

So you may come for speed or simplicity (meaning low-level primitiveness, not high-level elegance) and no-nonsense design, otherwise its just meh.

Hey @fiedzia, thanks for your great reply. This has got me thinking.
Formatted:

What you may like about go if you come from:

python/ruby: go is faster and allows you to write concurrent code

php/js: go is faster, concurrent, and its designers were competent

c/c++: go is simpler and prevents some common mistakes, compiles faster

java: go is faster and simpler. garbage collection is less of a problem

rust: go is simpler, compiles faster, io/task switching might be faster

functional languages: go is simpler, for some its faster/more predictable

What you may not like if you are coming from:

python/ruby: go is verbose, you'll need much more code to express the same thing. Many libraries/frameworks are missing. more advanced concepts will be hard/impossible to express in elegant way. Long list of language features is missing.

php/js: can't think of anything, everything is better

c/c++: no access to c/c++ libraries, many language features missing. You cannot write operating system in go. It has GC

java: no access to java libraries, lot of missing language and platform features, verbosity

rust: lot of missing language features, verbosity, sloppy attitude to code correctness and safety, GC, slower generated code

functional languages: Any functional language features are missing

The lack of libraries is a huge issue when using Go. Even basic database connectors are often missing.
I am writing a queue system for vfx.
Queue system? Care to elaborate.
Building cli tools... you can build cross platform as well. Major benefit here is, you just need to distribute single binary, no dependency hell.