A language optimised for reading
Most language design optimises for what a programmer can express. Go optimises for something else: what a different programmer can understand a year later, in a large codebase, without context.
That objective explains choices that look like omissions and are decisions.
The reasoning is about where time goes on a large team. Code is written once and read many times, by people who did not write it, often while something is broken. A feature that saves the author five minutes and costs each subsequent reader thirty seconds is a bad trade at scale, even though it is a good trade for the author.
So Go systematically prefers explicit and verbose over concise and clever, and the resulting code is often described as boring. That is the intent rather than an accident.
Whether it is the right objective is arguable and depends on the setting. What is worth understanding is that each omission below was a considered trade, and each has a real cost the enthusiasm tends to skip.

