Often we need a different version of go according to specific projects. There are different options we have like we can use Docker for our specific project’s need(we can talk about that in a different blog post). There are several other options but in this blog, we will talk about goenv.
Prerequisites: git
We’re using Ubuntu 20.04 so below instruction will work in ubuntu. On Mac too. Not sure about windows. Official Installation Guide GOENV Install guide
Goto github
We’re using Ubuntu 20.04 so below instruction will work in ubuntu. On Mac too. Not sure about windows. Official Installation Guide GOENV Install guide
git clone https://github.com/go-nv/goenv.git ~/.goenvif this particular git code syntax you(readers) are not familiar with we will explain it, it just cloning the repo and place it on
.goenvfolder on thehome//directory.
Define environment variable GOENV_ROOT
echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bashrc
echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bashrcfor
zsh/oh-my-zshusers, use zshrc or respective config files according to your terminal settings.
Add goenv init to your shell
echo 'eval "$(goenv init -)"' >> ~/.bashrcIf you want goenv to manage GOPATH and GOROOT (recommended), add GOPATH and GOROOT to your shell after eval “$(goenv init -)”
echo 'export PATH="$GOROOT/bin:$PATH"' >> ~/.bashrc
echo 'export GOPATH="$HOME/<workspaces_path>/go"' >> ~/.bashrcGOPATH Folder Structure

Restart your shell so the path changes take effect.
exec $SHELLInstall Go versions into $GOENV_ROOT/versions
goenv install <version_number>
# check all version which can be installed
goenv install -l
# Example
goenv install 1.15.6To upgrade to a specific release of goenv
cd $(goenv root)
git pullUninstalling goenv
rm -rf goenv rootDisable goenv
To disable goenv managing your Go versions, simply remove the goenv init line from your shell startup configuration. This will remove goenv shims directory from PATH, and future invocations like goenv will execute the system Go version, as before goenv.
Uninstalling Go Versions
goenv uninstallRun this command after you install a new version of Go to activate
goenv rehashIf you like you can read the same article in my personal github gist
How to use a specified version of Go (Globally or Locally)
# global
goenv global 1.15.6
# Local
goenv local 1.15.6
# restart shell
exec $SHELL
# check go version
go versionSettings for GOPATH
You can find the details in Go Wiki: Setting GOPATH
echo 'export PATH="$GOROOT/bin:$PATH"' >> ~/.bashrc
echo 'export GOPATH="$HOME/go"' >> ~/.bashrc
echo 'export PATH="$GOPATH/bin:$PATH"' >> ~/.bashrc
exec $SHELL
echo $GOPATHHappy GO development