Команда go покрывает повседневный цикл
Команды запускают из терминала. Сначала перейдите в папку проекта: pwd показывает путь (в PowerShell — Get-Location), ls показывает файлы (в PowerShell — dir). Создайте main.go и сохраните полный пример:
package main
import "fmt"
func main() {
fmt.Println("Файл готов к запуску")
}
go version показывает установленную версию компилятора и инструментов. go run main.go компилирует указанный файл во временный исполняемый файл и запускает его. go build main.go создаёт исполняемый файл в текущем каталоге, но не запускает. На Windows к имени файла обычно добавляется расширение .exe.
Работайте с пакетом и модулем
Для нескольких файлов проекта удобнее создать go.mod в корне командой go mod init example.com/console-demo. После этого go run . запускает пакет текущего каталога, а go build . собирает пакет. Точка здесь означает текущую папку. Не перепутайте запуск всей папки с запуском одного файла: go run main.go берёт конкретный файл.
go mod tidy сверяет импорты с зависимостями проекта и приводит файлы модуля в порядок. Если появились внешние пакеты, Go может скачать их; для примера только с fmt внешних зависимостей нет.
Форматирование, тесты и сборка с проверкой гонок
Форматирование исходника в Go единообразно. gofmt форматирует названный файл, а go fmt ./... применяет gofmt к пакетам текущего модуля и подкаталогам. Обычно форматирование запускают перед просмотром изменений кода; оно меняет отступы и пробелы, не поведение.
go test ./... запускает тесты пакетов в модуле. Даже если тестов пока нет, команда компилирует пакеты и сообщает об отсутствии тестов. Суффикс ./... означает все пакеты в текущем модуле и вложенных каталогах.
Флаг -race включает детектор гонок памяти при сборке и запуске поддерживаемой платформой программы, например go run -race . или go test -race ./.... Он помогает находить конкурентный доступ без синхронизации, но не доказывает отсутствие всех ошибок параллельного кода и не поддерживается каждой комбинацией ОС и архитектуры.
Перейдите к самостоятельному упражнению в карточке практики.