Там же практически по-русски написано:
у вас deadlock
У вас тут даже два дидлока
У вас range по каналу result никогда не завершится.
for msg := range results
Вот здесь пример как правильно:
https://gobyexample.com/range-over-channels
К примеру, канал results должен быть закрыт ранее, чем вы входите в
for msg := range results
Но и это еще не все.
Вы никогда не дойдете до close(jobs), потому что у вас стоит wg.Wait(), который завершиться только когда отработают все ваши 10 штук wg.Done()
Но wg.Done() не отработают, как как цикл
for j := range jobs {
завершиться только тогда когда будет вызван close(jobs),
а он будет вызван после всех wg.Done(), а wg.Done() будет вызвано после close(jobs), а close(jobs) ..............