go build и go install: что получается на выходе и куда кладётся
go build компилирует пакеты и, если это package main, кладёт исполняемый файл в текущий каталог с именем по имени каталога пакета; для библиотек он ничего не пишет — только проверяет, что всё собирается. go install делает то же, но кладёт результат в GOBIN (по умолчанию $GOPATH/bin, то есть обычно ~/go/bin), и именно так ставят инструменты. Управляют этим тремя флагами: -o задаёт путь и имя результата, -v печатает собираемые пакеты, ./... означает «этот модуль и всё внутри». Важная деталь, о которой забывают: сборка не запускает тесты и не проверяет _test.go-файлы, поэтому go build ./... может быть зелёным при сломанных тестах — для проверки всего кода нужен go vet ./... или go test. И ещё: результаты компиляции пакетов кешируются в GOCACHE, поэтому первая сборка долгая, а последующие быстрые, даже если бинарник удалить.