Intro

Go was conceived in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson, all at Google, and was announced in November 2009. The goals of the language and its accompanying tools were to be expressive, efficient in both compilation and execution, and effective in writing reliable and robust programs.

  • clear, idiomatic, and efficient programs.
  • open-source, cross platform
  • From C, Go inherited its expression syntax, control-flow statements, basic data types, call-by-value param- eter passing, pointers, and above all, C’s emphasis on programs that compile to efficient machine code and cooperate naturally with the abstractions of current operating systems.
  • Simplicity
  • Big standard library (Batteries included)

Go differs from Java in several ways:

  • Programs compile to machine code. There's no VM.
  • Statically linked binaries
  • Control over memory layout
  • Function values and lexical closures
  • Built-in strings (UTF-8)
  • Built-in generic maps and arrays/slices
  • Built-in concurrency

Go intentionally leaves out many features such as:

  • No classes
  • No constructors
  • No inheritance
  • No final
  • No exceptions
  • No annotations
  • No user-defined generics