+ other languages get close, eg Kotlin has nullable types (which is a poor substitute) and Result (which is also poor because it's not a true Either)
that said lots of languages these days have libraries that do it (Arrow, Vavr and countless others)
IMO the killer simple language that Go tries and fails to be would be something like a Kotlin+Arrow with heavily reduced syntax and features, eg
no exceptions (use Either or a correct Result type)
no loops (use map, fold etc)
no nulls (use a correct Option/Maybe type)
etc etc
= in such a language, we learn that methods return things, those things will be what they say they are (guaranteed by the compiler), they will tell you what you can do with them, and if a program compiles, you can be pretty damn sure it works as intended
insert "all the languages are broken, I should create a new language" meme here...