Luckily, I found this really nice little 2D game engine for Golang that even supports compiling for Browsers and started tinkering right away. So first thing I notice, the program wont run or compile while a Library is imported but not called or when variables are declared but not used. So I go online and find the following: That error is here to force you to write better code
Alright. So since they refuse to add a compiler flag to ignore this stuff, I guess I will comment / uncomment the library imports a couple times during my experiments using the underscore character. Why not. I guess it's clever because it forces people to keep their code files short because they have to scroll back to the top a bunch. It also makes the language completely unbearable for newbies, but whatever.
r := image.Rect(sx, sy, sx+tileSize, sy+tileSize) op.SourceRect = &r
What? One letter variable names? Really? But then it turns out this is normal because the language doesn't let you do this:
op.SourceRect = &(image.Rect(sx, sy, sx+tileSize, sy+tileSize))
After calming down a little bit from my intial rage, I can see a pattern here. Many programmers will feel clever If they can chain a bunch of function calls together and do all the business logic in one line of code, which then comes around to bite whoever works on that code in the future. So I guess it kind of makes sense if you are masochistic enough.
But styleguides, linters and git pre-commit hooks exist, yet the golang people prefer to bake that stuff in with no way to turn it off, which limits the language's usefulness in many ways.