Go Programming Language

What is it?

Go is an open source programming language that makes it easy to build simplereliable, and efficient software.

The Go programming language is an open source project to make programmers more productive.

Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.

Why Go (golang)?

  • Strong and Statically-typed
  • Excellent Community
  • Key features:
    • Simplicity
    • Fast compile times
    • Garbage collected
    • Built-in concurrency
    • Compile to stand-alone binaries
Note: 
Currently there is not a lot of packages available for client side apps (GUI's), as it is focused currently on Server side and Web-based applications.

History

Go was designed at Google in 2007 to improve programming productivity in an era of multicore, networked machines and large codebases.[23] The designers wanted to address criticism of other languages in use at Google, but keep their useful characteristics:[24]

static typing and run-time efficiency (like C++),
readability and usability (like Python or JavaScript),[25]
high-performance networking and multiprocessing.
The designers were primarily motivated by their shared dislike of C++.[26][27][28]

Go was publicly announced in November 2009,[29] and version 1.0 was released in March 2012.[30][31] Go is widely used in production at Google[32] and in many other organizations and open-source projects.

Design

Go is influenced by C, but with an emphasis on greater simplicity and safety. The language consists of:
  • A syntax and environment adopting patterns more common in dynamic languages:[46]
    • Optional concise variable declaration and initialization through type inference (x := 0 instead of int x = 0; or var x = 0;).
    • Fast compilation.[47]
    • Remote package management (go get)[48] and online package documentation.[49]
  • Distinctive approaches to particular problems:
    • Built-in concurrency primitives: light-weight processes (goroutines), channels, and the select statement.
    • An interface system in place of virtual inheritance, and type embedding instead of non-virtual inheritance.
    • A toolchain that, by default, produces statically linked native binaries without external dependencies.
  • A desire to keep the language specification simple enough to hold in a programmer's head,[50] in part by omitting features that are common in similar languages.



Useful Links


website:

Tutorials:
FreeCodeCamp.org
Learn Go Programming - Golang Tutorial for Beginners

(This is a very good, no-ad, tutorial)


Comments