Go (programming language)

Go
ParadigmMulti-paradigm: concurrent, imperative, functional, object-oriented
Designed byRobert Griesemer
Rob Pike
Ken Thompson
DeveloperThe Go Authors
First appearedNovember 10, 2009 (2009-11-10)
Stable release
1.24.3 / 6 May 2025 (6 May 2025)
Typing disciplineInferred, static, strong, structural, nominal
Memory managementGarbage collection
Implementation languageGo, Assembly language (gc); C++ (gofrontend)
OSDragonFly BSD, FreeBSD, Linux, macOS, NetBSD, OpenBSD, Plan 9, Solaris, Windows
License3-clause BSD + patent grant
Filename extensions.go
Websitego.dev
Major implementations
gc, gofrontend
Influenced by
C, Oberon-2, Limbo, Active Oberon, communicating sequential processes, Pascal, Oberon, Smalltalk, Newsqueak, Modula-2, Alef, APL, BCPL, Modula, occam
Influenced
Crystal, V

Go is a high-level general purpose programming language that is statically typed and compiled. It is known for the simplicity of its syntax and the efficiency of development that it enables by the inclusion of a large standard library supplying many needs for common projects. It was designed at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson, and publicly announced in November of 2009. It is syntactically similar to C, but also has memory safety, garbage collection, structural typing, and CSP-style concurrency. It is often referred to as Golang to avoid ambiguity and because of its former domain name, golang.org, but its proper name is Go.

There are two major implementations:

  • The original, self-hosting compiler toolchain, initially developed inside Google;
  • A frontend written in C++, called gofrontend, originally a GCC frontend, providing gccgo, a GCC-based Go compiler; later extended to also support LLVM, providing an LLVM-based Go compiler called gollvm.

A third-party source-to-source compiler, GopherJS, transpiles Go to JavaScript for front-end web development.