Go Beginners Series: Introduction, Installation, and Setting Up Go Environment
Tags: go, beginners, programming
Published: 2023-03-21 20:22:10

Golang, commonly known as Go, is an open-source, high-level, compiled, and statically typed language created and used internally by Google developers in 2007 and was open-sourced in 2009. Go has recently become popular as big companies have started using it to build significant applications.

Go boasts of improving developers' productivity by providing many handy features, including but not limited to static typing and run-time efficiency, readability and usability, high-performance networking, and multiprocessing. Big companies like [Bitly](https://bitly.com/blog/why-we-write-everything-in-go/), [Capital One](https://medium.com/capital-one-tech/a-serverless-and-go-journey-credit-offers-api-74ef1f9fde7f), [American Express](https://go.dev/solutions/americanexpress), and many others have testified that Go has saved them a lot of development with its incredible features.

## Common Use Cases
Go's static type system, explicit error handling, fast build and startup times, and an extensive standard library that includes different packages that make building common features easy, like exec, file I/O, regular expressions, time, HTTP, and JSON/CSV formatting tools lets developers of all types get right into their business logic. You can use Go to build different applications, no matter the features or requirements. 

However, there are four major areas of software development where Go shines the brightest, and we'll explore those in the following sections.

### 1. Cloud Development

![cloud dev](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/38ip1nrtmp5v1e0m40wu.png)

Cloud development is the process of building and deploying software applications on the cloud using various cloud service providers like Amazon Web Services, Google Cloud Platform, and Microsoft Azure. Many applications now utilize the cloud in one way or another, making it very important to use programming languages built to specifically target the development of highly reliable concurrent applications. 

According to the Go website, it was created to address the concurrency needs for developing scalable applications, microservices, and other applications that utilize serverless deployments.

Go addressed many challenges developers face with the modern cloud when trying to develop standard idiomatic APIs. By leveraging Go's built-in concurrency, fast build times, and lower CPU utilization to take advantage of multicore processors, developers can build servers with instant startup times that are cheaper to run on serverless deployments.

### 2. Command-line Interfaces Development (CLIs)
CLI development refers to building apps and tools that users interact with using ordinary text. They are an integral part of software development as they are primarily responsible for cloud and infrastructure maintenance applications due to their remote capabilities and easy automation. Common examples of command-line tools are AWS CLI, Laravel Artisan, Vue CLI, and many others.

Go is ideal for CLI development because it offers super-fast compilation, works for all primary and not-so-popular platforms, and has a strong developer community. Go supports dozens of architectures and operating systems and builds into a single self-contained without the need for complicated build farms; this makes installing Go applications a very compelling experience for users.

### 3. Development Operations and Site Reliability Engineering (DevOps & SRE)

![devops and sre](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xvezmk2kf3zgb928fj0r.png)

DevOps and site reliability engineers are software developers focusing on making software products more reliable, efficient, and scalable. They create command line interface tools, scripts, and other types of tooling for deploying the software and managing the cloud services efficiently.

Go provides DevOps and site reliability engineers with fast build times, lean and readable syntax, and code maintainability to make automated deployment and scaling of the software less painful as development and cloud infrastructure grow over time. It also has an automatic garbage collector, so they don't have to worry about memory management.

### 4. Web Development
Go is also suitable for web development, allowing software developers to write clean, readable, and maintainable code to build fast and scalable websites and applications. 

In addition to the standard library features I mentioned at the beginning of this section, Go also provides excellent support for the latest technologies, from support for different databases like MySQL, MongoDB, and ElasticSearch, to authentication with HTTP/2 and encryption with the latest TLS 1.3.

Although Go doesn't have a lot of frameworks, developers often claim it's much easier to write the feature in Go than to use a third-party library or framework. Also, thanks to its portability, Go can run and scale quickly on any serverless service, environment, or operating system.

These are four software development areas where Go works exceptionally well, according to different companies that have used it in production. And this is not to say you cannot use Go in other fields of software development, and I would certainly advise that you try it and see what you find; who knows? You might like it!

In the next section, let's explore how to install and set up a development environment for Go.

## How to Install Go
Now that you know what Go is, its benefits, and which areas of software development it is best suited for, let's take a look at how to install Go on your system.

To install Go, visit the Go [downloads page](https://go.dev/dl/) and download the installer that fits your system. After it's downloaded successfully, open the downloaded file and follow the prompts to install Go globally on your system.

To confirm if Go has been installed successfully, run the following command on your CLI:
```sh
go version
```
This should print the version of Go that you have just installed on your system. The steps are pretty straightforward. However, if you run into any issues or get an error after running the `go version` command, please refer to the [installation page](https://go.dev/doc/install) to redo the process and troubleshoot the problem with the instructions of your specific system.

Now that you have Go installed, let's explore some useful Go VSCode extensions that will aid your Go development process in the following sections.

### Install Go for Visual Studio Code
If you use the [Visual Studio Code editor](code.visualstudio.com), install the [Go for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=golang.Go) extension. This extension helps with code snippets, linting, formatting, debugging, and testing. It also comes with the following helpful features:

1. **IntelliSense** - Results appear for variables as you type.
2. **Code navigation** - Jump to or peek at a variable's declaration.
4. **Code editing** - Support for code snippets, formatting, code organization, and automatic organization of imports.
5. **Diagnostics** - Build, vet, and lint errors are shown as you type or save.

You should check the [full feature breakdown](https://github.com/golang/vscode-go/wiki/features) for more details.

## Conclusion
This article is the first part of the Go Beginner Series.

Go is a straightforward and opinionated language that allows you to write complex programs with easy syntax and an extensive standard library of tools. I hope this article achieved its aim of introducing you to Go and its common use cases. You also learned how to install Go and its official extension for the Visual Studio Code editor.

In the next article, we will explore the basics of Go, including but not limited to concepts like variables, data types, and operators.

If you have any corrections, suggestions, or feedback, please use the comments section to get them across to me. Thanks for reading, and see you at the next one!