Go (often called Golang) is compiled paradigm programming language, which was created by the Google Inc. in 2007. The original authors are Robert Griesemer, Rob Pike and Ken Thompson. It belongs with static typed languages with derived syntax from language C. It is based on the language Oberon. Concurrent processing takes over from the Newsqueak. The aim of this language was to learn from the past mistakes and predict the future problems.

Language offers a security type guarantee, on the other hand it contains also features, which are typical for the dynamical typed languages. Publicly, the language was introduced in November 2009, first stable release is dated to the 2011. Go is open-source language, which is used by many companies, e. g. Dropbox, SoundCloud, CloudFlare, Docker and of course the Google.

Typical elements of Go language

  • Declaration and initialization of variables is brief
  • Fast compilation
  • Concurrent processing is solved directly on the level of language
  • Implicit implementation of interface
  • Usage of embedding instead of inheritance
  • Statically linked programs without other dependencies
  • The absence of inheritance, overloading methods and operators, circular dependence among the packages, arithmetic of indicators, generic programming or implicit overtyping

Advantages of Go language usage

  • Speed. Programs are quickly written in Go, compilation is very fast and programs in Go are possible to edit and run directly on the web. Compilation happens directly to the machine code, it is possible to compile to Windows, Android, Linux and other operating systems.
  • Automatic memory management. Script garbage collector searches and releases parts of memory, which already program or process doesn’t use. That way, it has smaller impact on developers to manage the memory.
  • Built-in concurrent processing. Thanks to the built-in concurrent processing, the parallel processing is simpler than in other languages.
  • Documentation. Documentation of the code is standard feature of language. Thanks to that it is easier for the developer to document his code and generate readable information for a person from source code comments.
  • Rich library. Standard library contains many areas. Go is probably the only language, which has a fully functional web server as a part of standard library.
  • Elegant and easy build system. It is not needed to deal with build configuration or makefily.
  • It is easy to learn. It’s very similar to other programming languages and has readable documentation.
  • Built-in testing tool. Built-in testing tool helps the developers with the quality of the code. Thanks to simple API, they can try executable parts of a code and even in parallel.

Disadvantages of Go language

  • Relatively new language. Some libraries are missing, therefore the developers have to program them themselves. There is also less available courses and books, which deal with the language.
  • Simplicity. Go is as simple language as it can appear too superficial. In efforts of maximal simplicity, the language got rid of the development elements, which come from decades of programmers’ experience.
  • Difficult solution of mistakes. Error management is complicated, every function is needed to be controlled explicitly.
  • Safety. Operation safety is worse than e. g. Rust.
  • Absence of manual memory management. Disadvantage of garbage collector usage is inability of manual memory management.

Summary

Go is a language which is suitable for new project usage. In a project, that requires simplicity and a great efficiency. It allows simple implementation of parallel processing, which is faster in comparison to e. g. Ruby on Rail or Python.