Conditional compilation is a little more robust than just filenames - you can put boolean expressions of various build-time tags, which by default include the current version of go (go1.4) and the previous versions, the OS you're compiling for (linux, windows, plan9, nacl, various BSDs), the architecture (arm, 386, amd64, js), the compiler you're using (gc, gccgo), and cgo if your compiler has support for calling native C functions from Go code.