What is Go?

Go (also called Golang) is a programming language created at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. It was designed to fix problems that frustrated engineers working on large software systems — slow builds, tangled dependencies, and code that became harder to read as projects grew.

Go is:

  • Compiled — your code is translated into a single binary file that runs directly on the operating system. No interpreter, no virtual machine.
  • Statically typed — every variable has a type that’s known when the program is compiled. The compiler catches many mistakes before your program ever runs.
  • Simple — Go has a small set of features. The entire language specification fits in a short document. There’s usually one obvious way to do something.
  • Fast — both at compile time and runtime. Programs start instantly and use little memory.
  • Built for concurrency — Go makes it easy to do many things at once, which matters more every year as computers gain more CPU cores.

Why was Go created?

In the mid-2000s, Google engineers were dealing with two pain points:

  1. Slow compilation of large C++ projects. A small change could trigger minutes of waiting.
  2. Complexity creep in modern languages. Each year languages added more features, and codebases became harder to read.

Go was a deliberate reaction. The designers chose to leave out features that other languages had — like classes, inheritance, and exceptions — to keep the language small. The trade-off: less syntactic flexibility, but code that any Go programmer can read.

What can you build with Go?

A lot of the modern internet runs on Go:

  • Docker — the container platform that changed how software is shipped
  • Kubernetes — the system that orchestrates containers at scale
  • Terraform — infrastructure as code, used by countless companies
  • Hugo — one of the fastest static site generators
  • CockroachDB, InfluxDB, etcd — modern databases
  • The backends of Cloudflare, Uber, Twitch, Dropbox, and many others

Go is especially good for:

  • Backend services and APIs — web servers that talk to databases and other services
  • Command-line tools — utilities that run in your terminal
  • DevOps and infrastructure tools — automation, deployment, monitoring
  • Network programming — proxies, load balancers, networking software

It’s not the typical first choice for game engines, mobile UI apps, or data science — other languages dominate those areas. But for backend and systems work, Go is hard to beat.

What Go looks like

Here’s a complete Go program that prints a greeting. Don’t worry about understanding every line yet — we’ll get there.

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
}

A few things to notice:

  • Every Go file starts with a package declaration. We’ll explain packages later — for now, package main means “this file produces a runnable program”.
  • import "fmt" brings in Go’s formatting package, which gives us Println (print-line).
  • func main() defines the function where your program starts.
  • Go uses curly braces { } to mark blocks of code, and statements don’t need semicolons at the end.

If that looks unfamiliar, that’s fine — it’s about to become very familiar.

What’s next

In the next lesson, we’ll install Go on your computer and set up your editor. After that, you’ll write and run that “Hello, Go!” program yourself.

Toggle theme (T)