Условная компиляция: build-теги и суффиксы имён файлов
Условная компиляция в Go работает не через препроцессор, а через выбор файлов целиком — файл либо попадает в сборку, либо нет. Способов два. Суффиксы имён: файл store_linux.go компилируется только под Linux, store_arm64.go — только под arm64, store_linux_amd64.go — под их сочетание; это работает автоматически, без всяких директив. Директива //go:build: строка перед объявлением пакета с логическим выражением — //go:build linux && !cgo или //go:build integration. Синтаксис // +build со старым форматом объявлен устаревшим, и gofmt сам добавляет новый рядом. Практических применений три: платформозависимая реализация одного интерфейса, отключение тяжёлых тестов за собственным тегом (//go:build integration и запуск через -tags=integration), и исключение файлов инструментов из обычной сборки. Ключевое ограничение — тег не может включаться «наполовину»: гранулярность именно файловая.