Нет. У каждой горутины свой стек вызовов. recover() перехватывает панику только в той горутине, где она произошла.
Паника раскручивает стек только текущей горутины. Другая горутина не может "залезть" в чужой стек и перехватить панику. Если в горутине паника не перехвачена - процесс завершается (fatal error).
go func() {
defer func() {
if r := recover(); r != nil {
log.Println("recovered in goroutine:", r)
}
}()
panic("in goroutine")
}()
time.Sleep(time.Second)
// Паника перехвачена внутри той же горутины
recover() в defer внутри той же горутиныНеперехваченная паника в любой горутине завершает всю программу.