Функция main
копирует значение mux
при вызове функции TableHandler
.Функция TableHandler
изменяет копию.Это значение сбрасывается при возврате из функции TableHandler
.В результате обработчик не зарегистрирован в мультиплексоре main()
.
Исправлено изменение типа аргумента TableHandler
с http.ServeMux
на *http.ServeMux
.
import ( "net/http" )
func main() {
mux := http.NewServeMux()
handlers.TableHandler(mux) // <--- pass pointer here
}
func TableHandler(mux *http.ServeMux) { // <--- declare arg as pointer
mux.HandleFunc("/gpdp/v1/prices/", func(w http.ResponseWriter, r *http.Request)
log.Println("request for prices: ", r.Method, r.Body)
...}
Приложение перестало работать из-за изменения на http.ServeMuxв 2016 году .Это изменение выявило проблему в приложении.Копирование значений http.ServeMux
никогда не поддерживалось.Команда go vet
выводит предупреждение при копировании значений http.ServeMux
.