| Paradigm | Multi-paradigm: concurrent imperative, object-oriented |
|---|---|
| Designed by | Robert Griesemer Rob Pike Ken Thompson |
| Developer | The Go Authors |
| First appeared | November 10, 2009 |
| Stable release | 1.27.3 |
| Typing discipline | Inferred, static, strong, structural, nominal |
| Implementation language | Go, Assembly language (gc); C++ (gofrontend) |
| OS | many |
| License | 3-clause BSD + patent grant |
| 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, Erlang, | |
| Influenced | |
| Odin, Crystal, Zig, V (Vlang) | |
Go, also known as Golang, is a statically-typed concurrent programming language made by an engineer team at Google.
Here is a hello world program in Go.
package main
// Import fmt library through the standard library.
import "fmt"
// Define entry point.
func main() {
// Write to output.
fmt.println("Hello world!")
}
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.