Managing multiple Go versions with direnv
Install direnv
$ brew install direnv
Add to your shell
https://direnv.net/docs/hook.html
Create .envrc
GO={path to go version you want to use}
# If you use Homebrew
# GO=/opt/homebrew/Cellar/go@1.20/1.20.7/bin/go
export GOROOT="$($GO env GOROOT)"
PATH_rm '/opt/homebrew/Cellar/go*' # remove other versions
PATH_add "$($GO env GOROOT)/bin"
# use version specific GOPATH
export GOPATH=$HOME/go1.20
export PATH=$PATH:$GOPATH/bin
Allow .envrc
$ direnv allow
or allow prefix by setting up ~/.config/direnv/direnv.toml
[whitelist]
prefix = ["{path to your workspace}"]
CAUTION: This allows execution of .envrc in all sub-directories.