time.Sleep(0)Вопреки распространённому мифу — практически ничего.
time.Sleep с длительностью ≤ 0 сразу возвращает управление: горутина не «усыпляется» и не уступает планировщику. По сути это no-op.Часто думают, что
time.Sleep(0) отдаёт управление планировщику Go и позволяет переключиться на другие горутины. Но за это отвечает другая функция:runtime.Gosched() // вот это уступает управление планировщику
Gosched() снимает текущую горутину с процессора и ставит в очередь, давая шанс другим. А time.Sleep(0) этого не делает — если нужен именно yield, используйте runtime.Gosched().🐸 Библиотека Go для собеса