an experimental programming language.
Imperative, concurrent, garbage-collected. |
Go is …
package main import "fmt" func main() { fmt.Printf("Hello, 世界\n"); }
Go generates fast code and, equally importantly, does it fast. It takes too long to build software. The tools are slow and are getting slower. Dependencies are uncontrolled. Machines have stopped getting faster. Yet software still grows and grows. If we stay as we are, before long software construction will be unbearably slow.
Go is type safe and memory safe. Go has pointers, but you can't perform arithmetic on them. If you want that, you use slices, which known their limits.
Clumsy type systems drive people to dynamically typed languages. Go is object orientated without type hierarchies. Casts are checked at runtime and types can be reflected upon.
Go provides a way to write systems and servers as concurrent, garbage-collected processes (goroutines) with support from the language and run-time. Growing stacks and multiplexing of goroutines onto threads is done automatically.