Zajímavé. Některé typy tam generické jsou a nevybavuju si, že by mi někde jinde chyběly, a to jsem v tom napsal hodně kódu.
Jestli myslíš ty zabudované, tak ty jsou iiirc jenom dva - array a map.
Jediná WTF věc je kontrola chyb, ale i to je vlastně tvůrčí záměr. Člověk se prostě musí oprostit od OO myšlení à la Java.
No to každopádně, ta kontrola chyb je po chvilce děsně otravná. Ale jinak spíš záleží, co vnímáš jako WTF a co jenom jako něco, co je prostě jinak, než bys čekal, nevyhovuje ti to, ale bereš to prostě že to tak je. To je subjektivní.
Třeba docela překvapivý může být:
There's an important way in which embedding differs from subclassing. When we embed a type, the methods of that type become methods of the outer type, but when they are invoked the receiver of the method is the inner type, not the outer one.
https://golang.org/doc/effective_go.htmlIlustrace:
https://play.golang.org/p/446pcKpJRopNebo jinej problém, co jsem měl, spočíval v tom, že jsem měl modul, kterej definoval obecnej graf s obecným uzlem
type Node interface {...}
a pak několik modulů definujících konkrétní implementaci:
type SuperDuperNode struct {...}
...no a pak když jsem chtěl v tom "obecným" modulu deserializovat z JSONu strukturu
Nodes map[NodeID]Node
...tak se začaly dít věci... (TL;DR: nijak rozumně to nejde napsat, každý řešení je příšerný)