Go (Programming Language)
What is Go?
Go (often called golang because of its golang.org domain name) is a concise, compiled, structured programming language designed at Google by three visionary code gurus to improve programming productivity and efficiency for server-based products.
Go & Your Business
Go is an excellent language to use for simple programs, small APIs, or to provide supplementary component tools and services within larger, complex projects.
Small utilities can be easily re-built in Go, which can help ensure performance and long-term maintainability.
Its concurrency-centric design allows software to easily scale, ensuring your software solutions remain performant as your business and data grow.
- It's minimalist, extremely well-aligned for server scripts and APIs
- It's cross-platform, can build for both Windows and Linux machines
- It's fully self-contained; no prerequisites need to be installed on the target server
- Its minimalistic and consistent design makes it easy to onboard new developers
- Lots of functionality is built into the language itself, such as “goroutines” for concurrency, as well as a range of standard libraries
- It has fast build times and single executables with no dependencies. Even really large projects will build in seconds
- It is a great option to consider for cloud-native apps
What does it mean for us?
At Canary, we often consider Go for server scripts, command-line tools, infrastructure services and smaller target server applications where:
- We expect a small concise API
- We may be deploying to numerous targets and don't want reliance on any other pre-requisites being installed
- We may be deploying to Linux, Mac, Windows
Our internal Canary HeartBeat infrastructure services are a good example of when one might choose a Go implementation. These are used as part of our live monitors of hosted systems and allow us to monitor a range of services, with hooks into alerting systems to provide real-time notification of potential issues. This type of application highlights why it is a great candidate for use of Go — servers need absolutely no prerequisites to install the system, it is lightweight, fast and has very low resource requirements, and the core Go language provides most of the structures required natively.