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
.
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 readme
git clone https://github.com/syndbg/goenv.git ~/.goenv
if this particular git code syntax you(readers) are not familiar with we will explain it, it just cloning the repo and place it on
.goenv
folder on thehome/<username>/
directory.
echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bashrc
echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bashrc
for
zsh/oh-my-zsh
users, use zshrc or respective config files according to your terminal settings.
echo 'eval "$(goenv init -)"' >> ~/.bashrc
If 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>/golang"' >> ~/.bashrc
GOPATH Folder Structure
|-golang
|--|-bin
|--|-pkg
|--|-src
|--|--|-github.com
exec $SHELL
goenv install <version_number>
# check all version which can be installed
goenv install -l
# Example
goenv install 1.15.6
cd $(goenv root)
git pull
rm -rf goenv root
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.
goenv uninstall
goenv rehash
If you like, you can read the same article at our official blog
# set go version globally
goenv global 1.15.6
# set go version specific to your project
goenv local 1.15.6