Go (programming language)

GoGo programming languageGolangGo languageGoogle GoGcgoroutineomitting features which are common in similar languagesThe Go Language
Go, also known as Golang, is a statically typed, compiled programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson.wikipedia
540 Related Articles

Rob Pike

Go, also known as Golang, is a statically typed, compiled programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson.
He is best known for his work on the Go programming language and at Bell Labs, where he was a member of the Unix team and was involved in the creation of the Plan 9 from Bell Labs and Inferno operating systems, as well as the Limbo programming language.

Ken Thompson

Kenneth Lane ThompsonK. ThompsonKen L. Thompson
Go, also known as Golang, is a statically typed, compiled programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson.
Since 2006, Thompson has worked at Google, where he co-invented the Go programming language.

GNU Compiler Collection

GCCGNU C Compilerg++
A 2011 evaluation of the language and its gc implementation in comparison to C++ (GCC), Java and Scala by a Google engineer found:
Front ends were later developed for Objective-C, Objective-C++, Fortran, Java, Ada, and Go, among others.

Communicating sequential processes

CSPCommunicating Sequential Processes (CSP)channel
Go is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency. Concurrency-related structural conventions of Go (channels and alternative channel inputs) are derived from Tony Hoare's communicating sequential processes model.
CSP was highly influential in the design of the occam programming language, and also influenced the design of programming languages such as Limbo, RaftLib, Go, Crystal, and Clojure's core.async.

Garbage collection (computer science)

garbage collectiongarbage collectorgarbage-collected
Go is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency.
Many programming languages require garbage collection, either as part of the language specification (for example, Java, C#, D, Go and most scripting languages) or effectively for practical implementation (for example, formal languages like lambda calculus); these are said to be garbage collected languages.

C (programming language)

CC programming languageC language
Go is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency.
Many later languages have borrowed directly or indirectly from C, including C++, C#, Unix's C shell, D, Go, Java, JavaScript, Limbo, LPC, Objective-C, Perl, PHP, Python, Rust, Swift, Verilog and SystemVerilog (hardware description languages).

Compiled language

compiledcompilationcompile
Go, also known as Golang, is a statically typed, compiled programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson.

Exception handling

exceptionexceptionserror handling
In August 2018, the Go principal contributors published two ″draft designs″ for new language features, Generics and error handling, and asked Go users to submit feedback on them.
Go was initially released with exception handling explicitly omitted, with the developers arguing that it obfuscated control flow.

Type inference

inferredpartially inferredinfer
A combined declaration/initialization operator was introduced that allows the programmer to write or, without specifying the types of variables used.
Some languages that include type inference include C++11, C# (starting with version 3.0), Chapel, Clean, Crystal, D, F#, FreeBASIC, Go, Haskell, Java (starting with version 10), Julia, Kotlin, ML, Nim, OCaml, Opa, RPython, Rust, Scala, Swift, Vala and Visual Basic (starting with version 9.0).

Protocol (object-oriented programming)

interfaceinterfacesprotocols
The second are its interfaces, which provides runtime polymorphism.
Some programming languages provide explicit language support for protocols/interfaces (Ada, C#, D, Dart, Delphi, Go, Java, Logtalk, Object Pascal, Objective-C, PHP, Racket, Seed7, Swift).

Source-to-source compiler

transpilertranspilingXLT86
A third party transpiler, GopherJS, compiles Go to JavaScript for front-end web development.

Rust (programming language)

RustRust programming languageCargo
Proposals exist to introduce a proper package management solution for Go similar to Rust's cargo system or Node's npm system.
Rust does not use an automated garbage collection system like those used by Go, Java, or the .NET Framework.

Self-hosting (compilers)

self-hostingself-hostedself-compiling compiler
Such languages include Ada, BASIC, C, C++, C#, CoffeeScript, Crystal, Dylan, F#, FASM, Forth, Gambas, Go, Haskell, HolyC, Java, Lisp, Modula-2, OCaml, Oberon, Pascal, Python, Rust, Scala, Smalltalk, TypeScript, Vala, and Visual Basic.

Array slicing

slicesslicingsliced
Go adds literal syntaxes for initializing struct parameters by name, and for initializing maps and slices.
Array slicing facilities have been incorporated in several modern languages, such as Ada 2005, Boo, Cobra, D, Fortran 90, Go, Rust, Matlab, Perl, Python, S-Lang, Windows PowerShell and the mathematical/statistical languages GNU Octave, S and R.

WebAssembly

WASM
After the MVP release, there are plans to support multithreading and garbage collection which would make WebAssembly a compilation target for garbage-collected programming languages like C# (supported via Blazor) and F# (supported via Bolero with help of Blazor); Java, Julia, Ruby, as well as Go.

Python (programming language)

PythonPython programming languagePython 2
It has also been used in several video games, and has been adopted as first of the three available programming languages in Google App Engine, the other two being Java and Go.

Caddy (web server)

CaddyCaddy server
Caddy, sometimes clarified as the Caddy web server, is an open source, HTTP/2-enabled web server written in Go.

Concurrent computing

concurrentconcurrent programmingconcurrency
The Go language has built-in facilities, as well as library support, for writing concurrent programs.
;Message passing communication:Concurrent components communicate by exchanging messages (exemplified by MPI, Go, Scala, Erlang and occam).

Concurrency (computer science)

concurrencyconcurrentconcurrently
Go is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency.

Channel (programming)

channelschannelcommunication channels
Concurrency-related structural conventions of Go (channels and alternative channel inputs) are derived from Tony Hoare's communicating sequential processes model.
They are also used in Plan 9 from Bell Labs's libthread, as well as in Stackless Python and the Go programming language.

Duck typing

duckduck typedassuming that method exists
Multiple sources use the term duck typing when describing Go interfaces.
The TypeScript, OCaml, Scala, Go, Elm, Gosu and PureScript languages support structural typing to varying degrees.

Associative array

mapdictionariesdictionary
Go adds literal syntaxes for initializing struct parameters by name, and for initializing maps and slices.
Most modern scripting languages, starting with AWK and including Rexx, Perl, Tcl, JavaScript, Maple, Python, Ruby, Wolfram Language, Go, and Lua, support associative arrays as a primary container type.

Docker (software)

DockerDocker containersDocker Swarm
One year later, with the release of version 0.9, Docker replaced LXC with its own component, which was written in the Go programming language.

InfluxDB

It is written in Go and optimized for fast, high-availability storage and retrieval of time series data in fields such as operations monitoring, application metrics, Internet of Things sensor data, and real-time analytics.