Díky za zajímavý článek. Upřímně řečeno, kontrola chyb mi připadá jako možná nejslabší vlastnost Go. Má stejný zásadní problém, jako ta v C: nejsnazším, nejsvůdnějším a tedy bohužel i nejčastějším řešením je vratné chybové hodnoty prostě ignorovat a předpokládat, že k chybě nedošlo. Vynucený odchyt výjimek v Javě, nebo chybové typy jako používá Rust, mi proto připadají lepší - oba mají své plus a mínus, ale to je zase na úplně jinou diskusi.
26. 9. 2019, 03:28 editováno autorem komentáře
To je pravda. Sice se oproti céčku mnohé zlepšilo (už jen proto, že se nemusí mixovat návratový a chybový kód nebo řešit errno), ale někdy je prostě zbytečně zdlouhavé řešit všechny chybové stavy, tak to člověk neděla a není jazykem přinucen to dělat. Osobně bych asi byl pro obě možnosti, protože se tak sémanticky oddělí "očekávané chyby" (například se budu snažit o převod řetězce na číslo a někdy tam prostě budou jiné znaky) a skutečné výjimky (čtení ze souboru selhalo kvůli externím problémům), ale tvůrci Go se snaží zachovat minimalistický jazyk, takže uvidíme.
Změny se možná dočkáme v Go 2, protože návrhy na úpravy jazyka tímto směrem zatím nejsou zavřeny - https://github.com/golang/go/issues?page=1&q=is%3Aissue+is%3Aopen+label%3Aproposal+label%3AGo2&utf8=%E2%9C%93
Vecna poznamka - on Rust umi Result z main az od 1.26, coz neni tak dlouho. A potom jeste neni doreseno toto https://github.com/rust-lang/rust/issues/48711. Coz znamena, ze mainu bez Result bude porad jeste dost, protoze kazdy radeji sahne po std::process::exit.