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 |
Stable release | 1.23.3
/ 6 November 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 |
Go is a statically typed, compiled high-level general purpose programming language. It was designed at Google[12] in 2009 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]
There are two major implementations:
A third-party source-to-source compiler, GopherJS,[20] compiles Go to JavaScript for front-end web development.
Go supports first class functions, higher-order functions, user-defined function types, function literals, closures, and multiple return values. This rich feature set supports a functional programming style in a strongly typed language.
Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy.
Go is Object Oriented, but not in the usual way.
Go has structural typing, not duck typing. Full interface satisfaction is checked and required.
The language is called Go.
The compiler and runtime are now implemented in Go and assembler, without C.
gccgo, the GNU compiler for the Go programming language
Gollvm is an LLVM-based Go compiler.