Что такое build tags?

Middle
731 просмотров
AFK Offer AI

Build tags (build constraints) — условная компиляция. Файл включается в сборку только если тег совпадает.

Синтаксис (Go 1.17+):

//go:build linux && amd64

package mypackage

Старый синтаксис (до 1.17):

// +build linux,amd64

Примеры:

//go:build integration
// файл integration_test.go — только при go test -tags=integration

//go:build !windows // всё кроме Windows

//go:build (linux || darwin) && amd64 // Linux или macOS, только amd64

Запуск:

go build -tags=integration ./...
go test -tags="integration e2e" ./...

Встроенные теги: linux, darwin, windows, amd64, arm64, cgo, race, go1.22 и т.д.

Типичные кейсы:

  • Интеграционные тесты (integration)
  • Platform-specific код (linux/windows)
  • Feature flags при сборке

Следующий вопрос

Что такое составной индекс?