Na jednu stranu máte pravdu, ale na stranu druhou je v Go zvykem (= prakticky všichni to dodržují) používat více návratových hodnot a minimálně tak řešit typ Result (Optional je v tomto kontextu asi míň zapotřebí). V praxi se fakt na NPE v Go narazí málokdy, už jen proto, že se zde reference používají míň, než například v Javě a když už je nějaký objekt inicializován, tak je prakticky hned po volání konstruktoru jasné, že nebude nil (protože tady se error check v praxi vyžaduje).
PS: to je z praxe, kde v Go píšeme servicy. Asi u nějakého SW s hodně "rozmáchlými" datovými typy to bude jinak, ale u víceméně jednoduchých servis je toto asi ta nejméně problematická část Go.