Go 1.10 added a new flag failfast to go test:
The new go test -failfast flag disables running additional tests after any test fails. Note that tests running in parallel with the failing test are allowed to complete.
https://golang.org/doc/go1.10
However, note this does not work across packages: https://github.com/golang/go/issues/33038
Here’s a workaround:
for s in $(go list ./...); do if ! go test -failfast -v -p 1 $s; then break; fi; done