Что, если сделать свой отдельный Go, который бы транспилировался в обычный? как TS -> JS
Я бы добавил туда как минимум две вещи, которые точно никогда не появятся в Go, и половине людей там и не нужны:
1. Сахар для обработки ошибок (как-нибудь как в Расте, чтобы обработка была всё еще явной, но синтаксически попроще). Плюс синтаксис для ловли паник тоже попроще.
2. Добавил бы немного structured concurrency: запретил бы голый вызов команды
go. Синтаксически заставить дожидаться завершения горутины в той же функции, где она была запущена.Может, еще с каналами что-то намутить, чтобы заставить их закрывать примерно там же, где в них шла запись (в том же пакете?)
Тогда это получится язык в 10 раз более читаемый и в 10 раз менее запутанный в вопросах concurrency