Gofmt was written to reduce meaningless discussions about code formatting. I regret to say that no amount of meaningless discussion about syntax highlighting is useless, or I prefer to call it "spitzensparken blinkelichtzen" (used to ridicule users who enter wrong commands).
Grammar highlighting is childish. When I was three years old, I didn't use a color stick to learn arithmetic( http://en.wikipedia.org/wiki/Cuisenaire_rods )。 Now I only use monochrome numerical symbols.
This has been discussed several times in the past since before the open source release. The past consensus is that the sum type will not add too much content to the interface type. Once you have sorted them out, what will you get in the end? If there is an interface type, the compiler will check all the cases where you have filled in a type switch. This is a relatively small benefit for a new language change.
Similarly, I think the idioms available to simulate enumerations and keywords are pretty lame. (For example, the compiler cannot issue a lifesaving warning, "the enumeration value x 'is not processed in switch' '.)
a, err := fallibleOperationA() if err != nil { return nil, err } b, err := fallibleOperationB(a) if err != nil { return nil, err } return b, nil
a = fallibleOperationA() b = fallibleOperationB(a) return b
return fallibleOperationA() .then(a => fallibleOperationB(a)) .result()
a, err := fallibleOperationA() if err != nil { return nil, err } if err := fallibleOperationB(a); err != nil { return nil, err } c, err := fallibleOperationC(a) if err != nil { return nil, err } fallibleOperationD(a, c) return fallibleOperationE()