Getting Started with Golang Part I
Tags: go, beginners
Published: 2021-07-13 19:44:53


This article is about getting started with golang!

I started learning go a few months ago, because I wanted to write **fast, safe, and performant applications**. I began it by reading through **An Introduction to Programming in Go** by **Caleb Doxsey**. I'm a third of the way through, and I decided that I wanted to share the joy of learning go with everyone. Without furthe ado, let's get started!

## What is golang?

Golang, often shortened to go, is a programming language. It is used to write web servers, client applications, system programs, pretty much anything. It is a great programming language, suited to writing good code effortlessly.

## Who uses it?

[Google](https://developers.google.com/youtube/v3/quickstart/go), [Uber](https://eng.uber.com/go-geofence-highest-query-per-second-service/), [Twitch](https://news.ycombinator.com/item?id=20349004), and others.

## What's so great about go?

This article describes it perfectly: [https://stackoverflow.blog/2020/11/02/go-golang-learn-fast-programming-languages/](https://stackoverflow.blog/2020/11/02/go-golang-learn-fast-programming-languages/) at StackOverflow.

## Getting started Part I

In this part, we will install go and run a simple hello world program.

Go to [https://golang.org/doc/install](https://golang.org/doc/install) and follow the instructions for your operating system.

Now create a folder, lets say `goprograms`, and open your code editor in it. For this tutorial I will be using VS Code. The folder will be our **workspace**.

Create a new file `helloworld.go`, and paste the following code:

```go
package main 

import "fmt"

// This is where program execution starts
func main()  {
    // Prints your name!
    var name string = "User" // Replace this with your name
    message := fmt.Sprintf("Hello world, %v!", name)
    fmt.Println(message)
}

```

Now, open a terminal in the folder. On VS Code you can open a terminal with **Ctrl/CMD + Shift + ~**.

Now type `go run helloworld.go`.

You should see the output in your terminal.

```powershell
/goprograms on  main [!?⇡] via 🐹 v1.16.5 on ☁️  (us-east-1) 
❯ go run .\helloworld.go
Hello world, User!
```

Now, let's break down this program.

```go
package main 

...
```

This describes a _package_ main, which means a set of related programs which are collectively called `main`. Here, the name is unique to the context in which it exists, which means there is only one package with a particular name in a single workspace.

Thus, programs in go are related to each other using package names.

```go
...
import "fmt"
...
```

Here, we see the statement `import`. This __keyword__ (keywords are words with a special meaning to the go language, and are reserved for use) means that we are importing other packages into our workspace. Packages have names, and the name of the package we are importing is called `fmt`. By doing this we can use the programs under this package in our programs.

```go
...
func main()  {

}
...
```

This `func` keyword signifies a function, which is a discrete block of code that gets executed when called. Here, the name of the function is `main`, which is a function that gets called first everytime the program runs.

```go
    ...
    var name string = "User" // Replace this with your name
    ...
```

Here we are creating a variable with the `var` keyword. Variables are used to store data. We have given the variable a name, **name**, and it's type is `string` which is another keyword and means text data can be stored in this variable. We store the string **User** here.

```go
    ...
    message := fmt.Sprintf("Hello world, %v!", name)
    ...
```

Here, we are declaring a another variable **message**. We are assigning it the value on the other side of the `:=`.

Here, we are using the function `fmt.Sprintf()` function. It returns a string for us to use.

In the string, we are substituting the name variable in with `%v`.

```go
    ...
    fmt.Println(message)
    ...
```

Here, we are printing the value of the variable message using the `fmt.Println()` function.

That's all for this article, we will go over more in part 2 of this series!

## META

### This article has been published on

- [dev.to](https://dev.to/dbhatta/getting-started-with-golang-part-i-3gg6)
  - Cover image: Photo by [Aaron Burden](https://unsplash.com/@aaronburden?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/ground?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)