Воркеры под мьютексом и бесконечный цикл чтения

Что выведетMiddleпроверка — Спринт07-t017

Сначала определи, что выведет программа. Затем отрефакторь её, чтобы она работала без дедлока.

main.gogo
1package main2 3import (4	"fmt"5	"strconv"6	"sync"7)8 9func main() {10	var group sync.WaitGroup11	guard := sync.Mutex{}12	buf := make(chan string, 3)13 14	for n := 0; n < 6; n++ {15		group.Add(1)16		go func(buf chan<- string, n int, group *sync.WaitGroup) {17			defer group.Done()18			guard.Lock()19			buf <- fmt.Sprintf("worker #%s reporting", strconv.Itoa(n))20			guard.Unlock()21		}(buf, n, &group)22	}23 24	for {25		select {26		case msg := <-buf:27			fmt.Printf(msg)28		}29	}30 31	group.Wait()32}
Чем закончится программа?
Сначала подумай без запуска — на собесе компилятора не будет.