Go Roadmap — Why Go?

Jonathan Reeves
3 min readFeb 2, 2023

--

Photo by Jefferson Santos on Unsplash

What is Go?

Go, also known as Golang, is a programming language developed by Google in 2007. It was designed to be a simple and efficient language that can be used to build scalable and concurrent systems. This will be a series of posts hoping to help build up your understanding of Go. This is the first article in the Roadmap for Go series. If you are looking for others in the series just look for <Some title here> Go Roadmap and you should be able to see. In this article, we will discuss the reasons why Go is a great choice for building modern applications, as well as some of its limitations.

Pros of Go

  1. Simplicity: Go has a simple and easy-to-learn syntax, which makes it a great choice for developers of all skill levels.
  2. Concurrency: Go’s built-in support for concurrency, through goroutines and channels, makes it an ideal choice for building concurrent systems.
  3. Speed: Go is a compiled language and its execution is very fast.
  4. Garbage collection: Go has built-in support for garbage collection, which makes it easier to write memory-safe code.
  5. Standard Library: Go’s standard library is extensive and provides a wide range of functionality, including HTTP and networking, encryption, and image processing.

Cons of Go

  1. Limited OOP features: Go is not an object-oriented programming language and does not have features like classes and inheritance.
  2. Lack of fleshed out Generics: Generics in Go aren’t as fleshed out as a language like Rust, however there has been talks in the community of this changing with each update.
  3. Smaller Community: Compared to other more established languages such as Python, Java and C#, Go has a smaller community, which means that there may be fewer resources and libraries available.

Why Use Go?

I can hear you saying, “Well that’s great about the pros and cons, but why would I use Go?” Well that’s a good question. Below are some of the use cases for Go:

  1. Web development: Go’s standard library includes built-in support for HTTP and networking, making it easy to build web servers and web applications.
  2. Network services and distributed systems: Go’s support for concurrency and its ability to handle multiple tasks simultaneously make it a great choice for building network services, such as proxies and routers, as well as distributed systems.
  3. Command-line tools: Go is a compiled language, which means that it can be used to build fast and efficient command-line tools that can be easily distributed and run on different platforms.
  4. Data processing and machine learning: Go’s speed and built-in support for concurrency make it a great choice for building systems that process large amounts of data and perform machine learning tasks.
  5. Microservices: Go’s small binary size, strong type system, and cross-compilation capability makes it an excellent choice for building microservices.
  6. Containerization: Due to its low memory footprint and small binary size, Go is well-suited for building applications that will run inside containers.
  7. Game development: Go can be used to build eficient and fast games that can run on multiple platforms.
  8. System programming: Go can be used to build low-levl systems such as operating systems, file systems and device drivers.

Example Apps Built in Go

There are plenty of apps and tools that are built in Go. Some you might even use daily. Below is a list of apps built using Go:

  • Docker: Docker is a platform and tool that allows developers to easily create, deploy, and run applications in containers.
  • Kubernetes: Kubernetes is an open-source container orchestration system for automating the deployment, scaling, and management of containerized applications.
  • CockroachDB: CockroachDB is a distributed SQL database that is designed to be highly scalable and resilient.
  • Prometheus: Prometheus is an open-source monitoring and alerting system.

Conclusion

Go is a versatile, efficient, and powerful language that is well-suited for building concurrent, scalable, and high-performance systems. Its simplicity, built-in support for concurrency, and standard library make it a great choice for developers of all skill levels. It can be used for a wide range of applications, from web development and network services to data processing and machine learning.

--

--

Jonathan Reeves
Jonathan Reeves

Written by Jonathan Reeves

I am a software engineer that is currently trying to break into the DevOps world using Python. Professionally I use JavaScript with React to build websites.

Responses (1)