Wird die Verwendung globaler Variablen durch "net / http" in Golang als bewährte Methode angesehen?

Das Golang-Paket "net / http" verwendet die globale Variable DefaultServeMux, um Handler zu registrieren. Ist dies eine gute Praxis oder sogar eine Golang-Redewendung? Ist es schließlich eine globale Variable?

Die beiden Hauptgründe für die Nichtverwendung globaler Variablen sind AFAIK 1), die die Komplexität erhöhen, und 2), die in gleichzeitig ablaufenden Programmen problematisch sind.

Vielleicht 1) ist in diesem Fall nicht wichtig, weil der Entwickler sich entscheiden kann, DefaultServerMux nicht zu verwenden? Was ist mit 2)? Sind globale Variablen in Go immer thread / goroutine-sicher? Trotzdem wundert es mich, dass es in Go's Standardbibliothek verwendet wird. Ich habe noch nie eine solche Praxis in anderen Sprachen / Standardbibliotheken gesehen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage