I love Go, but it seems like just about every HTTP request router is designed around abuse of global state.
s := web.NewServer()
s.Get("/(.*)", hello)
s.Run("0.0.0.0:9999")
Same goes for net/http and gorilla. net/http calls it the "default" server, web.go calls it the "main" server. I blame the influence of Sinatra etc.—the examples (for all three libraries) don't make it clear that this is what's going on and don't encourage making your own server objects to minimize global state.This global state abuse sounds quite important to understand. Unfortunately I do not have any clue what you are talking about. Could you point me in a direction of some examples of someone doing it the right way?