DEV Community

Nerdherd
Nerdherd

Posted on

Installing Golang on MacOS

This guide is what I did to get Golang setup on my Mac machine.

Assumptions

You use the following:

  • asdf
  • zshrc

Install Golang

From asdf-golang

asdf plugin add golang https://github.com/asdf-community/asdf-golang.git
# install latest golang version
asdf install golang latest

# set the glboal version for golang to latest
asdf global golang latest

# reshim 
asdf reshim golang
Enter fullscreen mode Exit fullscreen mode

Add GOROOT in your shell's initialisation

GOROOT is the environment variable that specifics the location of the Go installation

Add the following to ~/.zshrc

. ~/.asdf/plugins/golang/set-env.zsh
Enter fullscreen mode Exit fullscreen mode

This will ensure that GOROOT and GOPATH is set each time you run your terminal

  • GOROOT: specifies location of the Go installation directory (e.g. compiler, linker, standard library)
  • GOPATH: specifies location of your workspace. Workspace is a directory hierachy with three directories: src, pkg, bin

You can see what set-env.zsh does:

$ cat ~/.asdf/plugins/golang/set-env.zsh
Enter fullscreen mode Exit fullscreen mode
asdf_update_golang_env() {
  local go_bin_path
  go_bin_path="$(asdf which go 2>/dev/null)"
  if [[ -n "${go_bin_path}" ]]; then
    export GOROOT
    GOROOT="$(dirname "$(dirname "${go_bin_path:A}")")"

    export GOPATH
    GOPATH="$(dirname "${GOROOT:A}")/packages"
  fi
}

autoload -U add-zsh-hook
add-zsh-hook precmd asdf_update_golang_env
Enter fullscreen mode Exit fullscreen mode

Update your currently opened terminal to use latest ~/.zshrc

source ~/.zshrc
Enter fullscreen mode Exit fullscreen mode

Check to see if GOROOT and GOPATH is set

> echo $GOROOT
/Users/username/.asdf/installs/golang/1.22.5/go

> echo $GOPATH
/Users/username/.asdf/installs/golang/1.22.5/packages
Enter fullscreen mode Exit fullscreen mode

Top comments (0)