Czy użycie globalnych zmiennych „net / http” jest uważane za dobrą praktykę w golang?

Pakiet golang „net / http” używa globalnej zmiennej DefaultServeMux do rejestrowania procedur obsługi. Czy jest to uważane za dobrą praktykę, czy nawet idiom Golanga? Czy mimo wszystko jest to zmienna globalna?

Dwie główne przyczyny niestosowania zmiennych globalnych to AFAIK 1), które dodają do złożoności, a 2) są problematyczne w programach współbieżnych.

Może 1) nie jest w tym przypadku uważany za ważny, ponieważ programista może nie używać DefaultServerMux? A co z 2)? Czy zmienne globalne zawsze są bezpieczne w Go? Mimo to jestem zaskoczony, że jest używana w standardowej bibliotece Go. Nigdy nie widziałem takiej praktyki w innych językach / standardowych bibliotekach.

questionAnswers(2)

yourAnswerToTheQuestion