Compiler bootstrapping depends on more than you might think

Like many languages and their toolchains, the Go compiler toolchain is written in Go. This presents a little bit of a problem if you want to wind up with a Go compiler without having to trust someone else's pre-built binary of it. Fortunately, the early versions of the Go toolchain were written in C, which (in theory) allows us to bootstrap a current binary of the Go compiler starting from the last version written in C. The Installing Go from source documentation has a list of what versions of Go can be built with what (which gets increasingly fine-grained with recent Go releases).