# Go

> Compiled language with garbage collection and goroutines, made for networked servers and cloud tools.

- **Appeared:** 2009
- **Creators:** Robert Griesemer, Rob Pike, Ken Thompson
- **Maintained by:** Google
- **Type:** backend
- **Status:** alive
- **Born from:** In 2007 a large Google program took 45 minutes to build, and Rob Pike's account of Go's origin puts its conception during one of those builds. The team wanted fast compilation, efficient execution and ease of programming, which its FAQ says no single mainstream language offered at the time.
- **Reacts to:** c, cpp
- **Trade-offs:** garbage collected; static types; compiles to native code; concurrency: green. Cost: A garbage collector you cannot switch off and a deliberately small language, with fewer abstractions, in return for fast builds and code that is easy to read.
- **Slots:** server ●●● strong; cli ●●● strong; data ●●○ ok; systems ●●○ ok; mobile ●○○ weak; embedded ●○○ weak; browser ○○○ none (Compiles to WebAssembly, but is not a browser language.)
- **Alternatives:** rust, java, csharp
- **Won where:** Google's web indexing services and Chrome optimization guide service, which are written in Go [source](https://go.dev/solutions/google/); CockroachDB, which was 89.6 percent Go code in October 2023 [source](https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/)
- **Timeline:** 2007: A large Google program takes 45 minutes to build, in the account of Rob Pike [source](https://go.dev/talks/2012/splash.article); 2009: The Go project is launched publicly on 10 November 2009 [source](https://go.dev/blog/1year); 2012: Go 1 is released on 28 March 2012 with a compatibility promise [source](https://go.dev/doc/devel/release)
- **Links:** [website](https://go.dev/)
- **PLDB:** https://pldb.io/concepts/go.html
- **Sources:** https://go.dev/talks/2012/splash.article, https://go.dev/doc/faq, https://go.dev/blog/1year, https://go.dev/doc/devel/release, https://go.dev/solutions/google/, https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/, https://go.dev/, https://pldb.io/concepts/go.html
- **Verified:** no, draft of 2026-10-30
- **Canonical:** https://langwhy.dev/lang/go/

## Why it exists

In 2007 a large Google program took 45 minutes to build. Rob Pike's account of Go's origin says that "the origin myth for Go states that it was during one of those 45 minute builds that Go was conceived" ([Pike, Go at Google](https://go.dev/talks/2012/splash.article)). The FAQ puts the underlying problem in one sentence: "One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language" ([Go FAQ](https://go.dev/doc/faq)). The aim was to combine them in one language, with concurrency and garbage collection built in. Go was launched publicly on 10 November 2009 ([Go blog](https://go.dev/blog/1year)).

## What it trades away

Go gives up manual memory control for a garbage collector, and gives up many language features for a small one. The FAQ states the goal as "the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language" ([Go FAQ](https://go.dev/doc/faq)). Concurrency is cheap, because goroutines have "little overhead beyond the memory for the stack, which is just a few kilobytes", but the programmer gets fewer features to shape the code with and less control over memory layout.

## Where it won

Google uses Go for its web indexing services, which are written in Go, and for the Chrome optimization guide service, which is implemented in Go ([Google's Go case study](https://go.dev/solutions/google/)). CockroachDB was 89.6 percent Go code in October 2023 ([CockroachDB](https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/)). Go 1, the first stable release, came out on 28 March 2012 with a promise that programs written for it will keep compiling and running unchanged under later versions ([Go release history](https://go.dev/doc/devel/release)).

---
Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/go.yaml
