Ich habe vor ein paar Tagen meinen Kontextbasierten Router neu aufgesetzt.
Zu finden unter https://github.com/gomgo/mux
Ich habe ihn ursprünglich geschrieben bevor gin geschrieben wurde.
Im Gegensatz zu gin kann man diesem Router einen eigenen Kontext geben. Man ist also nicht angewiesen den festen Kontext von gin zu nutzen. Das eröffnet auch semantisch bessere übersicht.
Ebenfalls nutzt er von Haus aus regexp-basierte Parameter, was gin nicht macht. Deshalb ist er auch oberflächlich langsamer aber unter der Haube vielfältiger nutzbar als gin, da gin httprouter verwendet.
Dieser Router dagegen verwendet einen schnelleren, aber speicheraufwendigeren Baum zur Speicherung der Pfade.
Die hier eingesetzte Technologie schlägt httprouter im direkten Vergleich. Es ist also der weltweit schnelleste resolver in Go.
Dadurch das man dem Kontext bei der Init Funktion den http.ResponseWriter und den *http.Request passt kann man auch http.Handler oder http.HandlerFuncs verwenden.