Мне было интересно, должен ли я создать новый ServeMux и зарегистрировать его в http.Server
или я должен напрямую вызывать http.HandleFunc
и http.Handler
?
Я думаю, что маршрут с ServeMux лучше, потому что http.HandleFunc
явно нарушает глобальное состояние HTTP-пакета, что считается плохой практикой в Go. Однако во многих учебниках, даже официальных, я часто вижу использование маршрута http.HandleFunc
.
Это заставляет меня задаться вопросом: почему нужно использовать http.HandleFunc
, когда есть ServeMux
? Я знаю, что у ServeMux есть некоторые преимущества (например, вы можете вложить его, не повторяя префикс все время), но мне интересно, почему я должен выбирать http.HandleFunc
вместо мультиплексора, тем более что HandleFunc
использует ServeMux
внутри.
Изменить: как и было обещано в комментариях, я попросил отказаться от дополнительных (и бесполезных функций IMO) на Golang-dev, и они сказали "нет" (ну, человек сказал "нет"). Вот ссылка.
http.HandleFunc
иhttp.Handle
должны быть объявлены устаревшими. ИспользованиеMux
иServer
добавляет еще 2 строки, а двусмысленность всегда плоха, особенно если более очевидный путь — плохой. - person Matt3o12   schedule 27.03.2016