About Go
simplicity is the key to good software
- creators: Robert Griesemer, Rob Pike, and Ken Thompson
- mature and stable language
- guarantees backwards compatibility
- compiled language: source code is converted into instructions in the native machine language of the computer
- standard library. The batteries are included
- goroutines: concurrency based on CSP (communicating sequential process)
- channels
- aggregate types (arrays, struct) holds directly the data; requiring less storage and fewer allocations and pointer indirections
- strongly typed
- type inference
- garbage collection
- package system
- first class functions
- functions can return multiple types
- lexical scope
- interfaces
- clojures
- pointers but no pointer aritmetic
- immutable strings: natively handles Unicode, so it can process text in all the world’s languages
- case sensitive
- syntax similar to C, less parenthesses, no semicolons
- no classes, but structs with methods
- no implicit numeric conversions
- no constructors or destructors
- no operator overloading
- no default parameter values
- no inheritance, only type embedding
- no generics
- no exceptions
- no macros
- no function annotations
- no thread-local storage
- no semicolons at the end of declarations
- unlikly to add more features into the language
- achieving maximum effect with minimum means