9 Reasons Why We Love Go

While we pride ourselves on being tech-agnostic, there’s always been a soft spot in our hearts for Go - an open source programming language designed by Google engineers and present in many FG projects. Also known as Golang, Go has a plethora of features and benefits that have made our lives easier over the years.

For those unacquainted, here are nine reasons why we love Go…and why we think you’ll love it, too.

It’s (relatively) easy to learn.

Go is a small language that is easy to learn. The language spec is less than 100 pages but still retains all of the advanced features that you’d need, such as collections, function closures, and concurrency. This will reduce the cost of adopting Go in your organization compared to other technologies.

It’s designed to scale.

Go grew out of the needs at Google to maintain a large codebase. The Go language includes all the features that help teams be productive and intentionally removes features that can lead to a lack of clarity. The language is designed around productivity and protecting developers from making many common mistakes. In this way, Go is a tool that can help development teams maintain a large codebase more efficiently.

It can use C libraries.

Go maintains a Cgo layer that allows access to those libraries from within Go applications. This allows Go to remain the core of your application, but with the ability to bring in any library or API that doesn’t yet have a native Go version. This allows Go applications to interface with any existing system or hardware so long as it has a C library.

It’s great at concurrency.

Concurrency in Go is one of its strongest features. With computers increasingly scaling horizontally, the need for concurrent programs is higher than ever. The goroutine model encourages the use of concurrency in all applications. Since the threading is handling by the Go runtime (which is bundled with each binary) your program will be more performant on machines with more cores without so much as a recompile.

It’s all about the tools.

The tooling in Go provides a solid foundation that makes Go accessible on any platform. Features like easy cross compilation, auto syntax formatting, user testing, and more set Go apart from other systems programming languages. Additionally, Go producing statically compiled binaries simplifies deployment to servers.

It’s open source.

Go does not offer an enterprise or paid version that gets security patches earlier than the free version. This allows you to have confidence in knowing that Go will not introduce fees that your organization would be forced to pay down the road. Additionally, Go has a very permissive license that allows developers to use it without worry of copyleft.

It’s tried-and-true.

Many robust and mature software tools were built using Go with a large amount being in the containers space, including Kubernetes, Docker and minio. Most of these projects are open source with their code is readily viewable, making them an excellent resource to learn how to structure a large codebase and implement effective design patterns.

Developers love it.

According to the 2019 Stack Overflow Developer Survey Go is the 3rd most-wanted language by developers and the 9th most-loved language. This shows that Go will engage your developers and excite them to build the next generation of you software project.

Batteries included.

Aside from the excellent tooling, Go’s standard library is very robust. It includes packages for easily building http servers, adding cryptographic algorithms, leveraging compression in your project, and much more. What’s there not to love?

Do you work with Go? Give us a shoutout @forestgiant!

Adam Richardson
Software Engineer