Ono to souvisí s naprosto odlišnou filozofií obout jazyků. Go se snaží být snadno přístupný jazyk pro vývojáře zvyklé na jedné straně na C, na druhé straně na vyšší jazyky jako je Python a většinou je navržené tak, aby se v něm tyto cílové skupiny cítily co nejvíc doma. Naproti tomu Rust klade důraz na správnost a prokazatelnost kódu s neskrývaným příbuzenstvím s funkcionálními jazyky. Tomu odpovídají úplně jiné kompromisy včetně toho, že Rust se v podstatě vůbec nesnaží minimizovat programátorský opruz.
Mě jde ale o to, že tato změna by do Go pěkně zapadala. Jasně že například výjimky, třídy nebo generiky jsou strašně velký zásah do jazyka a případně by se to asi muselo nějak dolepovat (to nikdo nechce). Ale mít možnost říct "tento parametr nebude měněn, zajisti to překladači laskavě" by bylo pěkné a vlastně by ten zásah byl naprosto minimální z pohledu syntaxe (nějaké to const) i sémantiky.
Myslím, že z hlediska sémantiky by to právě byl zásah naprosto zásadní. Kdyby to totiž měl překladač zajistit doopravdy, ne jenom naoko jako v C/C++, vyžadovalo by to nějaký borrow checker jako má Rust. Druhou možností by bylo radikálně omezit sémantiku takových "neměnných proměnných", např. zakázat ukládat ukazatele na ně do jiných datových struktur apod. Obojí by byl hluboký zásah do jazyka a myslím, že by se to neslučovalo s duchem a cíly, které si Go vytyčilo.
A navíc si myslím, že to není až tak důležité. Go i Rust jsou podle mého názoru tak úspěšné díky tomu, že mají jasno nejen v tom, čeho chtějí dosáhnout, ale i v tom, čím být nechtějí. Neboli když chci snadný a uživatelsky příjemný jazyk, použiji Go. Když potřebuji rigorózní jazyk se silnými garancemi, použiji Rust. Málo známý jazyk Zig je jakýsi pokus o zlatou střední cestu, ale samotný fakt, že zůstává dost obskurní, možná svědčí o tom, že po tom prostě není poptávka.