IMO the biggest factors for the success of Go are 1) super-fast compile times, 2) easy to interpret compiler errors, and 3) dead simple shipment of high performance, native static binaries. I think Go has succeeded, despite, not because of the language itself. One very big limitation being the lack of generics or any sort of ability to leverage higher-order types. Sometimes making a small modification to a large code…
OCaml has always been known for having really fast compile times, and could be described as a "higher-typed language" I think.
> And as for the topic of clear error messages, the higher-typed languages are all atrocious at this.
Elm and Rust have made good progress here and have some of the most readable and useful errors out here, especially for beginners.