Tech Review Series: Go

Go is the ”youngling” in the family of languages used for backend development but it certainly should not be underestimated. Though being relatively young, Go already gained immense popularity worldwide due to the high level of its performance and its all-in-one nature.

Golang (another name for Go) is suitable for a variety of tasks and is said to be nearly flawless. Is it really so and why did Google decide to create a programming language of its own? Read below.

Tech Review Series: Go

Go: a brief history and the current state

Go is quite young indeed compared to PHP or Java. The developers of Go began working on it in 2007 and officially introduced the first version in 2012. So why did they decide to create a new programming language from scratch when there was a whole array of languages at their disposal?

There were several reasons why Google developers decided to create Go. First, they all shared a dislike for C++, mainly because C++ has certain compilation issues. The second reason was that they needed a better alternative for working with networked machines and big codebases. Unfortunately, the existing languages did not provide the needed level of efficiency: Java was too complex, Ruby was too slow, and Javascript had serious issues with maintenance. Therefore, Go was intended to become a solution that would remove all the abovementioned problems.

As stated above, the official release of the first version of Golang happened in 2012. No need to say that Go was primarily used by Google at first, but with time, it became really popular with other companies as well.

Throughout the years and till 2018, Go did not see many major changes. In 2018 though, the main contributors announced two draft designs for several new features, error handling, and generics. However, because the new version did not provide support for generic programming and had verbose error handling, it was heavily criticized by the users.

Today there are over 1.1 million Go developers around the world and the number keeps growing. As for the companies using Go, the first one to come to mind would be Google (obviously!), followed by Uber, Dropbox, Medium, Adobe, and eBay. 

Go: technology type

The syntax of Go is quite similar to the syntax of the C-family languages. Go was also heavily influenced by Pascal, Oberon, and Modula and has certain similarities with the Newsqueak and Limbo languages.

Go is an open-source, statically typed language. Though often called Golang (because of the golang.org domain name), the right name of the language is Go.

Since Go was designed with an aim to improve the issues of existing languages, it turned out to be very user-friendly, simple, and safe. The most known and useful Go features include:

  • Fast compilation directly to the machine code;
  • Automatic garbage collection for memory optimization and better use;
  • Defined style rules for easy code maintenance;
  • Support of functional programming;
  • Built-in concurrency with channels instead of threads;
  • A cross-platform language that efficiently runs on all common systems.

Gofmt

Gofmt is a tool for the automatic formatting of Go source code. The formatting makes the code much easier to write and read, facilitates code maintenance, and leaves no room for debating about spacing.

Gofmt comes with a Go installation so you won’t have to worry about where to get this formatter. One of the interesting things about Gofmt is that you can’t configure it (unlike other formatters). This level of inflexibility is actually an advantage because developers do not need to set their preferences on braces and spacing – Go takes full care of it!

The use of Go: most common cases

We already mentioned that Golang is a quite universal language that has many areas of application. Below we listed the most notable ones where Go performs in all its glory.

Distributed systems

Concurrency is the key to the successful functioning of network applications and Go has several native concurrency features such as channels and goroutines (very lightweight threads). In this way, Go can be efficiently used for projects involving networking, cloud services, and distributed functions. In addition to that, Go is also highly suitable for building cloud applications and for cloud computing.

Server-side services

Go can be used for working with a variety of server-side services, such as integration layers, caching mechanisms, tasks that involve a high level of I/O, and many more. And there is no need to say that Go is great for building the server-side of the applications and provides a stable and high level of performance and a very simple deployment.

In terms of backend development, Go gets additional bonus points for having an easy learning curve (compared to other languages). As well, its web server is a module in the standard library and is really simple to use. 

API development

One more use case for Go is API development. In fact, there is even a special framework for that which is called Goa. One of the greatest things about it is that in Goa, the API definition is described as code and is the source from which server code and client code are derived. The code is described with the help of Golang’s DSL (domestic server language) and is implemented separately from the app’s source code. This makes Goa focus on the API’s design and thus allows developing clean and clear APIs.

Go Pros and Cons

By now, Go seems just perfect – so are there any hidden rocks at all? Same as with any other technology, there are certain pros and cons of using Golang – let’s have a closer look.

Tech Review Series: Go

Expert Opinion

Just a few years ago Go was one of the “unknown” languages and was mostly used by its developers at Google and at several start-ups that wanted to use something new and modern. Now the popularity of the language can be easily measured by the number of Go conferences around the world, the number of open-source Go projects, and the fast-growing developers’ community.

Today Go allows developers to create all kinds of applications: backend services, CLI-tools, cross-platform apps, and even frontend or mobile apps by using WebAssembly. Its built-in concurrency system helps to easily create concurrent apps that are perfect for multi-core processors (which is especially good for high-load projects). Error handling enforces developers to prevent undefined behavior of the application and the standard library is one of the greatest features that Go has. Another great thing about Go is that it compiles just one binary file in the end, which includes all dependencies in it. Only one binary for the whole web application allows you to simply copy-paste your app to any cloud server and run it in a matter of seconds!

Probably the most important feature of the language is its simplicity – it made Go so popular among developers since it’s so easy to switch to Go syntax and learn the basics. This and the other features of the language make people

Go developer

Maksim

Conclusion

With Go programming language, we finish our tech review series on backend technologies and we hope you enjoyed them. In the next series, we start discussing frontend development and the first technology that we’ll talk about will be React. Sign up for our newsletter and receive our latest updates as soon as they are out in the blog!

Want to stay updated on the latest tech news?

Sign up for our monthly blog newsletter in the form below.

Softteco Logo Footer