Лучший способ — через context или канал-сигнал. Создаёшь ctx, cancel := context.WithCancel(parentCtx), передаёшь ctx в горутину, внутри слушаешь <-ctx.Done() в select. Когда нужно остановить — вызываешь cancel(). Альтернатива — done-канал: close(done) и все читатели получают сигнал. Никогда не используй runtime.Goexit() или общие флаги без синхронизации. Горутина должна сама решать когда и как завершиться, а не убиваться снаружи.
Как правильно завершить горутину?
Middle
1.4k просмотровAFK Offer AI
Как сериализовать/десериализовать JSON?