Skip to main content

What is Go?

Go is a programming language that is open source and runs across platforms. Its reputation rests on being simple and efficient, and that makes it a solid choice for applications that need high performance.

It is compiled and statically typed, and programs written in it run fast.

Robert Griesemer, Rob Pike and Ken Thompson created it at Google in 2007.

If you have seen code in other languages, parts of Go's syntax will probably look familiar.


What is Go Used For?

  • Server-side code for websites and web services
  • Programs that communicate over a network
  • Enterprise applications that have to run on several platforms
  • Software built for the cloud (cloud-native development)

Why Use Go?

  • It is easy to pick up and enjoyable to work with
  • Programs both compile and run quickly
  • Concurrency support is part of the language
  • Memory is managed for you
  • It runs on many platforms, including Windows, Mac, Linux and Raspberry Pi

Go Compared to Other Languages

Go code is compiled and statically typed, and it is quick both to compile and to run. Goroutines and channels give you concurrency, and a garbage collector frees unused memory automatically. Classes, objects and inheritance are not part of the language.

Many languages make different trade-offs. An interpreted, dynamically typed language, for instance, may run slowly and lack a built-in concurrency mechanism, although it can still offer automatic garbage collection along with classes, objects and inheritance.

Other languages share Go's static typing and compilation and also run fast, yet they can take a long time to compile. They may handle concurrency through threads and leave out automatic garbage collection, while still offering classes, objects and inheritance.

Note: A few of these terms deserve a quick explanation. Compilation time is how long it takes to turn your code into an executable program. Concurrency means doing several things at once, or out of order, while the final result stays the same. Statically typed means the type of every variable is known when the code is compiled.


Get Started

No programming background is needed to follow along. We start from the basics of Go and build up from there.