blog posts

Go

Golang programming language advantages that you’ll love !

since it first appeared at Google in 2009, thousands of developers (and entire businesses) have adopted the open-source coding language Go for key software-based products and services. Designed to mimic core features of C, Go’s authors sought to maximize brevity and simplicity. Today, the language’s clarity and lack of ambiguity around its syntax makes it a favorite with developers.

Golang Advantages

One of Golang’s biggest advantages is that it offers the clarity and ease-of-use that other languages lack. Golang’s advantages make it easy for new programmers to quickly understand the language and for seasoned veterans to easily read each other’s code.

We spoke with technologists at eight tech companies about what they’ve built in Go, and why they chose it for those particular tools and services.

 

CHOOZLE

For Choozle Developer Ruchi Malik, the methodology behind why her team picked up Go was simple: Also they wanted something that was quick and easy to use. And ease of use is important when doing something as complex as, say, restructuring all of your back end or scaling the entire company.

How did you choose Go as the best language for this project?

As a team, we did a lot of research to find the best language for our business needs. Go ended up winning due to many of its awesome features. But we knew we wanted a language that would be fast, simple, maintainable and easy to learn. Go checked all those boxes with its support for concurrency, built-in testing, profiling framework and easy and clear documentation. All of this made it very approachable for the entire team to commit to learning Go for our application re-build.

What is the coolest software program you’re building using Go, and how will this project impact your company?

We’re actually rebuilding our entire back end in Go. We are using it to build microservices that are specific to our business needs, like advertising, authentication and creatives. Also each of these services is loosely coupled, independently deployable and manageable. Plus, Go makes it very easy to scale as a company. This is very important because, as our engineering team grows, each service can be managed by a different unit.

Chief Technology Officer Peter Evans said Go is a great programming language for all ranges of experience:

It allows new programmers to pick up the language quickly, and it allows experienced programmers to quickly understand someone else’s code.

What tools and services do you write in Golang?

We tend to write backend-focused tools. All of our API services are written in Go. And we have a number of commands which are also written in Go. That we run as one-offs or on regular schedules.

What criteria do you use?

For us, Go is our general-purpose backend language. Sometimes, there’s a specific need for another language–the tooling for data engineering in Python is excellent. And we use a lot of Python for that. If not, the available libraries in Go are often excellent for the needs we have, and the tooling that you get with Go is really hard to beat.

What are your favorite challenges?

I think because Go doesn’t have classes. It really forces you to think about your program design in a different (and I would say better) way. We’ve known for a long time that object composition is a better pattern than class inheritance. And Go forces you to use object composition–classical inheritance just isn’t an option.

Another interesting challenge is making explicit use of Go’s concurrency features. I often think to myself that we should try to solve a problem synchronously. And then look to see how we can layer in concurrency later on. Because you can make things a lot more complex if you misuse concurrency. But it’s such a powerful feature of the language, and there are opportunities for performance and efficiency in many places with it.

What advantages does Go have?

Go is a really simple language to understand. It allows new programmers to pick up the language quickly, and it allows experienced programmers to quickly understand someone else’s code. And Go’s fast: if you’re coming from an interpreted language like PHP, Python, or Ruby, it’s almost night-and-day.

The tooling provided by Go is amazing: a great testing framework built into the language itself. That can also generate code coverage reports; a great linter, and lots of other compelling tools to perform static analysis. And Go’s built-in source formatting tool (gofmt) was, and is, a game-changer. The only times our team comments on formatting issues in our pull requests. Is because someone’s editor integration with gofmt broke.

A good comparison for Go is with Java. Ten years ago, if you had a project you thought you’d obviously need to use Java to build, I feel that these days you would be better off with Go. It’s a great language to use on the backend.

iTrellis

Seattle-based iTrellis specializes in custom software development, systems integration, technology program management and business intelligence for businesses of all sizes. The company builds industry-specific full stack solutions for clients all over the world.

Lead Software Developer Loren Anderson said Go is an easy language for developers to learn relatively quickly.

What tools and services do you write in Go?

Golang is very useful for writing light-weight microservices. We currently use it for generating APIs that interact with our front-end applications. If you want to build a small functional microservice quickly, then Golang is a great tool to use.

It’s an easy language for developers to learn quickly.”

What are some advantages and challenges associated with coding in Go?

The advantages of using Go over other similar coding languages is that it’s an easy language for developers to learn quickly, and it has several built-in features to assist in asynchronous development.

One of the more notable challenges about coding in Go is that it lacks some of the features that I find useful in programming languages such as C#. The biggest missing feature would be the LINQ functions when working with collections of data in C#.