Здравствуйте, mrTwister, Вы писали:
T>Все это есть в Go, но без явных языковых конструкций. T>Когда ты в Go пишешь "sum(1, 2)" тут неявно подразумевается псевдокод "await sum(1,2)". У тебя вызывающая функция до sum может выполняться в одном потоке ОС, а после "x := sum(1, 2)" может продолжить выполняться вообще в другом потоке (то есть так же, как в C# варианте).
Почему ты так думаешь? Попробуй доказать это в коде.
Должна быть возможность получить что-то типа Task или Promise или Future не дожидаясь исполнения и добавить эти промисы в список, к примеру. Потом подождать пока исполнится весь список и получить результат каждого из списка.
В Go оператор go не может вернуть промис или что-то подобное, а значит совсем другая концепция.