1) Флаг для синхронизации - канал с пустой структурой (она почти ничего не стоит, так как в ней нет информации о типах)
done := make(chan struct{})
// [...]
done <- struct{}{}
2) Односторонний канал для сигнализации о завершении работы
func main() {
done := make(chan struct{})
go func(done chan<- struct{}) {
// stuff
done <- struct
(
Read more... )