Как находить goroutine leaks в тестах?

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

Первый инструмент — goleak от Uber, ставишь defer goleak.VerifyNone(t) и он поймает незакрытые горутины. Второй — runtime.NumGoroutine() до и после теста, сравниваешь. Третий — go test -v смотришь что тест висит (не завершается). Часто причина — незакрытый канал или забытый context cancel.

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

Как реализовать Iterator в Go?