Таких языков как Go, много, я их называю D-подобными языками(по характеристике Runtime), они отличаются наличием автоматического управления памятью и используются для компиляции в нативный код, без использовании виртуальной машины или ее среды(Runtime). Это неплохие языки программирования, позволяют новичкам быстро научиться программировать не часто наступая на грабли. Но все использование автоматического управления памятью создает некоторые проблемы в больших и сложных приложениях. Это падение производительности и отчасти увеличение потребления памяти. Особенно если скажем при отрисовке кадра на экране(или на окне) создаются множество объектов и естественно это приведет к тому, что каждую секунду сборщик мусора будет вынужден обрабатывать тысячи объектов. Пример - тот же Flutter/Dart, там обычный учебный пример программы работает с увеличением потребляемой памяти примерно 4 килобайта, при этом программа ничего не делает, только обрабатывает перемещения указателя мышки и отрисовывает окно приложения. Потом это потребление останавливается у некоторого лимита(на самом деле нет - оно пляшет в ту и другую сторону). И с этим ничего не поделать, так устроенны такие ЯП. По этому в некоторой степени повышается потребления питания и некоторое увеличение нагрузки на процессор, в мобильных приложениях и на слабых устройствах это существенно. Для того чтобы исправить это, нужно выделять временные объекты на стеке, а не на куче. Можно разве что оптимизировать так, чтобы во время отрисовки экрана(или обработки события) не создавались временные объекты, или почти не создавались. Для каждого метода можно добавить свои поля, которые используется в горячих временных объектах или реализовать свой стек объектов, которые используются как временные. Но это рецепт не работает для неизменяемых объектов.
Поэтому такие ЯП не являются полноценной заменой C/C++.
Я перечислю такие языки(которые я называю D-подобными): D, Objective-C, Go, Nim, Vala, V, Dart, Swift,Crystal и есть еще много других. Сюда же можно отнести и Haxe, даже при транспиляции в C++ там есть сборщик мусора.
Из этих языков можно выделить по признаку близости к C, позволяя легко импортировать функции, написанные на C: D, Objective-C, Nim, Vala.
Но если вы хотите программировать на Go в области прикладного программирования, тогда я лучше посоветую использовать Nim.
Я же сам предпочитаю использовать (из перечисленных языков) Vala, это отличный язык программирования, синтаксис похож на Java и C#, и объекты можно выделять вручную и даже на стеке(зависит от объявления типа), но это малопопулярный язык программирования. Единственный значительный минус Vala - отсутствие перезагрузки функций и методов, это из-за близости к языку C(точнее из-за прозрачного взаимодействия с кодом на C и именования экспортируемых из скомпилированных бинарников функций стиля C).