Что такое CGO и когда оно нужно?

Senior
346 просмотров
AFK Offer AI

CGO — механизм, позволяющий вызывать C-код из Go и наоборот. Включается автоматически, когда в Go-файле есть import "C" и комментарии с C-кодом над ним. CGO нужно для работы с C-библиотеками: SQLite (go-sqlite3), графика, криптография, научные вычисления. Но у него серьёзные минусы: ломает кросс-компиляцию, замедляет сборку, горутины на C-вызовах привязываются к OS-потоку. Поэтому Go-сообщество старается избегать CGO и пишет чистые Go-реализации. CGO_ENABLED=0 — часто в Dockerfile.

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

Как тестировать retry logic?