- Namespace system strongly favours single-word names
- Type embedding allows for single-dot access (not this.path.is.long())
- Zero-elements allow for elegant, zero-line initialization and existance checks, alleviating in part the need safe navigatorion operators.
Also I'd argue that the lack of map and filter are programmer nudges towards more elegant, compact solutions, but that's hard to prove. I've been annoyed with the lack of standard ways of doing things as well, but most often it turned out that I was simply doing it wrong, and Go was carefully designed to make the wrong way annoying to use. The compactness doesn't stem from using fewer lines to express simple constructs like if else, but the overall code organisation and structure that are the result of nudges like this one, as well as the code encapsulation they use (no classes, but interfaces and structs) and acyclic dependencies.
Generics will come out with the next version, though.
- Namespace system strongly favours single-word names
- Type embedding allows for single-dot access (not this.path.is.long())
- Zero-elements allow for elegant, zero-line initialization and existance checks, alleviating in part the need safe navigatorion operators.
Also I'd argue that the lack of map and filter are programmer nudges towards more elegant, compact solutions, but that's hard to prove. I've been annoyed with the lack of standard ways of doing things as well, but most often it turned out that I was simply doing it wrong, and Go was carefully designed to make the wrong way annoying to use. The compactness doesn't stem from using fewer lines to express simple constructs like if else, but the overall code organisation and structure that are the result of nudges like this one, as well as the code encapsulation they use (no classes, but interfaces and structs) and acyclic dependencies.
Generics will come out with the next version, though.