# How to install and configure Golang

In this article, you will see how to install Golang and configure it to use the private GitHub repositories of your company.

## Right to the point

> BE SURE TO REPLACE `{VERSION}` WITH THE DESIRED VERSION THAT YOU WANT!!!

### Download Go

```bash
curl -OL https://golang.org/dl/go{VERSION}.linux-amd64.tar.gz
```

### Install Go

```bash
sudo tar -C /usr/local -xvf go{VERSION}.linux-amd64.tar.gz
```

### Configure Go

```bash
sudo nano ~/.profile
# Or with zsh:
sudo nano ~/.zprofile
```

Paste this at the end of the file, replacing `{YOUR COMPANY ALIAS}` with your company alias:

```bash
# Golang
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export GOPRIVATE=github.com/{YOUR COMPANY ALIAS}/*
export PATH=$PATH:$GOROOT:$GOPATH:$GOBIN
export PATH="$PATH:$(go env GOPATH)/bin"
```

Run this to update your terminal and apply the changes:

```bash
source ~/.profile
# Or with zsh:
source ~/.zprofile
```

### Configure SSH key on GitHub

Run this, and remember to replace \`{YOUR EMAIL}\` with your email:

* Run this and only press enter until the command stop
    
* The ssh key **MUST NOT** have a password
    

```bash
ssh-keygen -t ed25519 -C "{YOUR EMAIL}"
```

```bash
eval "$(ssh-agent -s)"
```

```bash
ssh-add ~/.ssh/id_ed25519
```

```bash
cat ~/.ssh/id_ed25519.pub
```

Copy the content displayed on your terminal, including your email. **COPY EVERYTHING** that the previous command returned.

Go to GitHub and follow [this tutorial](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account#adding-a-new-ssh-key-to-your-account) to add the SSH key.

### Configure Git

```bash
sudo nano ~/.gitconfig
```

Paste this at the end of the file:

```bash
[url "ssh://git@github.com/"]
	insteadOf = https://github.com/
```

## Done!

Now you can work with Golang and private repositories on GitHub with no problems!
