Ich frage mich, ob ich einen neuen ServeMux erstellen und registrieren sollte, um die http.Server
oder sollte ich http.HandleFunc
und http.Handler
direkt aufrufen?Sollte ich ServeMux oder http direkt in Golang verwenden
Ich denke, die Route mit einem ServeMux ist besser, weil http.HandleFunc
offensichtlich verwirrt mit dem globalen Status des HTTP-Pakets, die als schlechte Praxis in Go gilt. In vielen Tutorials, sogar den offiziellen, sehe ich oft die http.HandleFunc
Route, die benutzt wird.
Das lässt mich fragen: warum sollte man http.HandleFunc
verwenden, wenn es eine ServeMux
gibt? Ich weiß, dass ServeMux einige Vorteile hat (z. B. können Sie es verschachteln, ohne das Präfix die ganze Zeit zu wiederholen), aber ich frage mich, warum ich jemals http.HandleFunc
über Multiplexer wählen sollte, zumal HandleFunc
intern ein ServeMux
verwendet.
Edit: wie in den Kommentaren versprochen, habe ich gebeten, die zusätzlichen (und nutzlos IMO Funktionen) auf Golang-dev zu vertreiben und sie sagten nein (na ja, auf Person sagte nein). Here is the link.
(Ich wollte auch sagen, dass dies eine gute Frage ist, und eine nützliche Frage für andere in der Zukunft, da sie schon früher auftaucht.) – elithrar
elithrar: darum habe ich es hier gefragt. Ich konnte bei Google nichts finden. Imo, 'http.HandleFunc' und' http.Handle' sollten dann veraltet sein. Die Verwendung von 'Mux' und' Server' fügt nur 2 weitere Zeilen hinzu und Mehrdeutigkeit ist immer schlecht, besonders wenn der offensichtliche Weg der "schlechte Weg" ist. – Matt3o12
Das Go1-Kompatibilitätsversprechen lässt das Entfernen nicht zu, also bleiben wir bis zu "2.0" (das ist ein langer Weg - Jahre). – elithrar