Go (programming language)
Programming language / From Wikipedia, the free encyclopedia
For the 2003 agent-based programming language, see Go! (programming language).
Go is a statically typed, compiled high-level programming language designed at Google[12] by Robert Griesemer, Rob Pike, and Ken Thompson.[4] It is syntactically similar to C, but also has memory safety, garbage collection, structural typing,[7] and CSP-style concurrency.[13] It is often referred to as Golang because of its former domain name, golang.org
, but its proper name is Go.[14]
Quick Facts Paradigm, Designed by ...
Paradigm | Multi-paradigm: concurrent imperative, functional[1] object-oriented[2][3] |
---|---|
Designed by | Robert Griesemer Rob Pike Ken Thompson[4] |
Developer | The Go Authors[5] |
First appeared | November 10, 2009; 14 years ago (2009-11-10) |
Stable release | 1.22.4
/ 4 June 2024; 2 months ago (4 June 2024) |
Typing discipline | Inferred, static, strong,[6] structural,[7][8] nominal |
Memory management | Garbage collection |
Implementation language | Go, Assembly language (gc); C++ (gofrontend) |
OS | DragonFly BSD, FreeBSD, Linux, macOS, NetBSD, OpenBSD,[9] Plan 9,[10] Solaris, Windows |
License | 3-clause BSD[5] + patent grant[11] |
Filename extensions | .go |
Website | go |
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 |
Close
There are two major implementations:
- Google's self-hosting[15] "gc" compiler toolchain, targeting multiple operating systems and WebAssembly.[16]
- gofrontend, a frontend to other compilers, with the libgo library. With GCC the combination is gccgo;[17] with LLVM the combination is gollvm.[18][lower-alpha 1]
A third-party source-to-source compiler, GopherJS,[20] compiles Go to JavaScript for front-end web development.