CGO_ENABLEDCGO_ENABLED — это переменная окружения, которая включает или выключает CGo при сборке Go-приложений. Принимает два значения: 1 (включено) и 0 (выключено).CGo — это механизм, позволяющий Go-коду взаимодействовать с C: вызывать C-функции и использовать C-библиотеки прямо из Go-программы.
Зачем этим управлять:
•
CGO_ENABLED=0 даёт полностью статический бинарник без зависимостей от системных C-библиотек — удобно для минимальных Docker-образов (scratch, alpine) и упрощает кросс-компиляцию.•
CGO_ENABLED=1 нужен, когда проект реально использует C-код или библиотеки, завязанные на cgoCGO_ENABLED=0 GOOS=linux go build -o app
Важный нюанс: по умолчанию CGo включён, но при кросс-компиляции (когда
GOOS/GOARCH отличаются от хостовых) Go автоматически отключает его, если не задан C-кросс-компилятор.🐸 Библиотека Go для собеса