Go has:

  • first-class functions,
  • lexical scope,
  • a system call interface,
  • and immutable strings in which text is generally encoded in UTF-8.

But it has comparatively few features and is unlikely to add more. For instance, it has:

  • no implicit numeric conversions,
  • no constructors or destructors,
  • no operator overloading,
  • no default parameter values,
  • no inheritance,
  • no generics,
  • no exceptions,
  • no macros,
  • no function annotations,
  • and no thread-local storage.

To avoid design complexity


Go has no class hierarchies, or indeed any classes; complex object behaviors are created:

Methods may be associated with any user-defined type, not just structures, and the relationship between:

so a concrete type may satisfy an interface that the type’s designer was unaware of.


Documentation / Reference


Task Runner