Go's mascot is a gopher, designed by Renée French.
|
|
Paradigm | compiled, concurrent, imperative, structured |
---|---|
Designed by | Robert Griesemer Rob Pike Ken Thompson |
Developer | Google Inc. |
First appeared | November 10, 2009 |
Stable release |
1.8.1 / April 7, 2017
|
Typing discipline | strong, static, inferred, structural |
Implementation language | Go, assembly language, previously C (gc); C++ (gccgo) |
OS | Linux, macOS, FreeBSD, NetBSD, OpenBSD,Windows, Plan 9,DragonFly BSD, Solaris |
License | BSD-style + patent grant |
Filename extensions | .go |
Website | golang |
Major implementations | |
gc, gccgo | |
Influenced by | |
Alef, APL,BCPL,C, CSP, Limbo, Modula, Newsqueak, Oberon, occam, Pascal,Python, Smalltalk | |
Influenced | |
Crystal |
Go (often referred to as golang) is a free and open sourceprogramming language created at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. It is a compiled, statically typed language in the tradition of Algol and C, with garbage collection, limited structural typing,memory safety features and CSP-style concurrent programming features added.
The language was announced in November 2009. It is used in some of Google's production systems, as well as by other firms.
Two major implementations exist:
The "gc" toolchain has been self-hosting since version 1.5.
Go originated as an experiment by Google engineers Robert Griesemer, Rob Pike, and Ken Thompson to design a new programming language that would resolve common criticisms of other languages while maintaining their positive characteristics. The new language was to include the following features:
In later interviews, all three of the language designers cited their shared dislike of C++'s complexity as a primary motivation for designing a new language.
Go 1.0 was released in March 2012.
Go is recognizably in the tradition of C, but makes many changes to improve brevity, simplicity, and safety. Go consists of,
Go's syntax includes changes from C aimed at keeping code concise and readable. A combined declaration/initialization operator was introduced that allows the programmer to write i := 3
or s := "Hello, world!"
, without specifying the types of variables. This contrasts with C's int i = 3;
and const char *s = "Hello, world!";
. Semicolons still terminate statements, but are implicit when the end of a line occurs. Functions may return multiple values, and returning a result, err
pair is the conventional way a function indicates an error to its caller in Go. Go adds literal syntaxes for initializing struct parameters by name, and for initializing maps and slices. As an alternative to C's three-statement for
loop, Go's range
expressions allow concise iteration over arrays, slices, strings, maps, and channels.