Skip to content

Introduction

A brief history of Go

  • Began life at Google and is widely used there.
  • Conceived in 2007, publicly announced 2009, and v1 was released in 2012
  • Designers cited their dislike of C++ as a primary motivation for designing Go

Core tenets

Compiled - Go compiles to a binary that can run on all common operating systems.

Concurrency-forward - Go handles the heavy lifting for matching routines to threads. You get to focus on the logic.

Object-oriented/imperative - While you can apply many functional concepts here, Go is unabashedly object-oriented.

Statically-typed - Everything has a type!

I C what you did there

Go takes its cues from C, Python, and Java; but adopted patterns from dynamically typed languages:

  • type inference
  • semicolons are inferred
  • fast compilation
  • remote package management and online documentation

Already ready already

  • Robust native tooling
  • Built-in concurrency primitives
  • Language provides tools for building, formatting, running, documenting, etc
  • Native unit testing library (though supplementing it is recommended)
  • Built-in dependency management

Upsides

  • Easy to learn
  • Large, excited community
  • Simple concurrency
  • Robust plug-ins for most popular IDEs
  • FUN

Downsides

  • Unit testing with mocks has a learning curve
  • Error handling may be bulky for some
  • Concurrency is easy to learn, difficult to master