This looks interesting, but I really dislike Go’s use of comments for what are essentially preprocessor statements (for instance, in CGo and now in generate). Comments should be, well, comments, and not have any effect on the program generated for the code. I don’t understand why they didn’t just add some other symbol (like #) to denote preprocessor statements.
I agree that they shouldnt use comments for this type of stuff, but their main goal is to avoid making this part of the build. It is strictly separate from it, so if they start defining some sort of “#define” style syntax for it then it starts to feel like a language feature as opposed to a toolchain feature, and a language feature is something that is expected to be done by the compiler.