Это просто потому, что goroutines - это не темы. Данную goroutine можно планировать с помощью среды выполнения Go, связанной с потоком операционной системы, но, например, в случае блокировки операций ввода-вывода указанные потоки могут быть связаны с другими goroutines, в то время как другой ожидает.
Что это значит?
Для соединения с потоком требуется синхронизирующий объект, чтобы узнать, когда поток завершен. Поскольку Go's goroutines на самом деле просто очень легкие объекты, которые имеют только стек, они не предоставляют такие объекты синхронизации напрямую.
Предложение Go's CSP заключается в том, что вы можете дезинтегрировать тысячи goroutines очень дешево и использовать столько потоков, сколько у вас есть физические ядра процессора. В перспективе ОС объекты синхронизации дороги, поэтому наличие таких объектов для каждого горутина будет очень неэффективным.
Вместо этого синхронизация достигается с использованием каналов или WaitGroup из пакета синхронизации.
Вы видели ['sync'] (https://golang.org/pkg/sync/)? У него есть примитивы для ожидания окончания потока (хотя, как я понимаю, это не самый предпочтительный способ работы в Голанге). – Jules
Нет, нет. Но в любом случае, я задаю вопрос * почему *, а не * как *. – Tobias
Это сделало бы ваш вопрос спорным, если есть способ сделать это. – Jules