func usage() { … } const modPath … const modVersionPrefix … var goroot … var gohostos … var gohostarch … var goos … var goarch … func main() { … } // mode computes the mode for the given file name. func mode(name string, _ fs.FileMode) fs.FileMode { … } // readVERSION reads the VERSION file. // The first line of the file is the Go version. // Additional lines are 'key value' pairs setting other data. // The only valid key at the moment is 'time', which sets the modification time for file archives. func readVERSION(goroot string) (version string, t time.Time) { … } // writeFile writes a file with the given name and data or fatals. func writeFile(name string, data []byte) { … } // check panics if err is not nil. Otherwise it returns x. // It is only meant to be used in a function that has deferred // a function to recover appropriately from the panic. func check[T any](x T, err error) T { … } // check1 panics if err is not nil. // It is only meant to be used in a function that has deferred // a function to recover appropriately from the panic. func check1(err error) { … } // writeTgz writes the archive in tgz form to the file named name. func writeTgz(name string, a *Archive) { … } // writeZip writes the archive in zip form to the file named name. func writeZip(name string, a *Archive) { … } func reportHash(name string) { … }