I've spent the last 2 months on a from-scratch dev project with parts in C, C++, rust, go and python.<p>Comparing C to C++ gave me the most insight on what & where golang is. Writing C code forces you to spend your time rewriting parts of C++ every time you try to do anything. The C++ typesystem has features that have penetrated the C++ compiler ecosystem (clang/msvc/g++ et al) because they matter to devs.<p>Go feels like C in this respect. The 'empty interface approach' to polymorphism is the worst. Compare this to the 1970s approach to polymorphism in C, struct sockaddr_in. Go feels the same except there's a greater carpal tunnel risk from typing braces and parens everywhere.<p>Operating generically on typed collections in go often means using the reflect package. go:generate is 1000x worse than the C preprocessor. Yikes.<p>the most impressive go project I've seen is grumpy, google's in-house port of python to the golang runtime. It makes a serious case for the go garbage collection being best in class. The rest of the language isn't there yet.