V tom se ovšem neshodneme. V Golangu je to děsný binec, protože nikdy nevíte co Vám v tom error typu přijde.
A sekvence jako tato zrovna přehledností neoplývají.
if v, ok := err.(IOError); ok { ... } else if v, ok := err.(NetworkError); ok { ... }
Stejně jako nekonečné
if err = f(); err != nil {}
u každého volání. Ten otazník je jen syntaktický cukr, ale strašně to zkracuje kód (jeden řádek místo tří).
A pak je tu obecný problém Golangu, kde skoro nelze řetězit funkce, protože dvě návratové hodnoty. Opět jen textový problém, ale otravný. I Java začala být s Optional mnohem příjemnější na používání.
Golang umožňuje prakticky to samé co ostatní jazyky, ale ten neprůhledný a generický error typ nesnáším. Golang kód má tendenci se kvůli němu příliš roztahovat, což není dobré pro čitelnost (funkce se nevlezou na obrazovku a error handling zabírá většinu prostoru).