for-loop variable capture was maybe the #1 worst decision in the language. It was never what you wanted. I appreciate Go's commitment to backwards-compatibility, but in this case breaking it was the right choice.
This is a blast from a previous lifetime! I worked at Relic Entertainment during that time. Both Relic and Radical's offices were in Yaletown in Vancouver at that time, IIRC. Radical ended up moving to Main & Terminal.
I worked on Company of Heroes and Dawn of War during this era. The code looks very familiar. It's the same style of C++. The code looks very similar to Homeworld.
https://github.com/HomeworldSDL/HomeworldSDL
I speak English natively, and have learned French, German, Sesotho and Japanese with a mixture of books and immersion. Obviously immersion is the best way.
I used Duolingo to help me learn Spanish, and I was struck by how artificial it is. It may teach you to understand a language, but not to speak it.
Far superior, in my experience, is https://www.languagetransfer.org, which has free audio lessons to learn French, Spanish, Italian, Greek, Turkish, Arabic, and Swahili (and English for Spanish speakers). This is the most natural method short of immersion I have ever experienced, and very effective. Amazingly, it is all done by one man, and runs on donations.
There is an app, which is delightfully clean and usable.
Mihalis also has an introduction to music theory, which gets excellent reviews!