A language built for services.
WHY IT IS USED
Simple language, quickly learned Excellent concurrency support Compiles to a single binary with no runtime dependency Fast startup and modest memory use Strong standard library
WHAT THE SINGLE BINARY PROVIDES
Deployment by copying one file.
WHY THAT MATTERS
No runtime to install, no dependency resolution on the server, and trivially reproducible.
WHAT CONCURRENCY LOOKS LIKE
Lightweight routines, cheap enough to create in large numbers, communicating over channels.
WHAT THAT SUITS
Services handling many concurrent connections Network services generally
WHAT THE LANGUAGE DELIBERATELY LACKS
Extensive abstraction features.
WHY
Simplicity and readability across large teams.
WHAT THAT MEANS PRACTICALLY
More explicit code, and less cleverness.
WHAT ERROR HANDLING LOOKS LIKE
Errors returned as values, checked explicitly.
WHAT THAT COSTS
Verbosity.
WHAT IT PROVIDES
Every failure path visible.
WHAT IT SUITS
APIs, network services, command-line tools, infrastructure components.
WHAT TO LEARN FIRST
The standard library's HTTP handling, which is capable without a framework.