В пакете golang "net/http" используется глобальная переменная DefaultServeMux для регистрации обработчиков. Считается ли это хорошей практикой или даже игонией голанга? Это глобальная переменная?
Двумя основными причинами не использования глобальных переменных являются AFAIK 1), которые они добавляют к сложности и 2) являются проблематичными в параллельных программах.
Может быть, 1) не считается важным в этом случае, потому что разработчик может не использовать DefaultServerMux? Как насчет 2)? Являются ли глобальные переменные всегда безопасными для потоков /goroutine в Go? Тем не менее, я удивлен, что он использовался в стандартной библиотеке Go. Я никогда не видел такой практики в других языках/стандартных библиотеках.