I’ve found that using a Makefile is helpful for running and building Go projects.

You can create a very complex Makefile to coordinate a number of build tasks. However, I will not focus on a complex setup here. Rather, this is a quick and dirty generic Makefile that I like to use for demo or throwaway projects.

You could just as easily use a bash script, but I prefer a Makefile. My example will not cover all scenarios, but I like using this as a generic build process for my one-off standalone Go apps.

You should read up on setting the GOPATH to understand how to set up a reliable GOPATH for long term development. My Makefile is specifically overriding the GOPATH to the current directory. That is because this example Makefile is designed for throaway projects. This is probably not ideal for most workflows, but that is up to you to decide.

# Makefile

export GOPATH := $(shell pwd)

all:
	echo $$GOPATH
	go get -d
	go run *.go

build:
	echo $$GOPATH
	go get -d
	go build -o out.bin

Then simply run make to run your Go app.

You can also run make build to build a binary for your Go app.

Dependencies get downloaded to ./src. Note, this is a relative path. The dependencies will end up in the current directory with your Makefile and Go code due to how I am setting the GOPATH.