1. 16

  2. 4

    Thanks for sharing your thoughts on Go :)

    A few comments:

    About URL routing: net/http.ServeMux, the URL router included in the standard library, is simple by design. Its purpose is not be a general use router. Its purpose is to be a general mechanism to “mount” different applications in the same URL space. I’m not aware of any major programming language including a sophisticated URL router in its standard library.

    About text/template and html/template: The major feature of standard library templating is its context-aware sanitization. It simplifies the code by automating escaping and is very secure by default. I think this a fantastic feature.

    About the lack of web frameworks: There is a lot new solutions coming on! Maybe you could find something that fits your needs in http://martini.codegangsta.io/ or https://github.com/pilu/traffic. Not using a framework and using some libraries like Gorilla, as you wrote, is also an excellent solution. A little more work in the short term, but more control and flexibility in the long run.

    1. 2

      Yeah, the routing’s pretty good for being a part of the standard library but with just a bit more work it would be truly useful in its own right. I don’t want to sound like I’m being too critical though. It’s awesome that you can do so much without leaving the standard library and it’ll definitely provide common footing for lots of other projects, which will hopefully mean they all have similar interfaces.

      Thanks for the pointers to the other projects – martini in particular looks interesting!

      1. 3

        You’re welcome! I’ve not used Martini in a real project, but I spent some time reading its source and its documentation. The API is really nice (still some people disagree with heavy use of reflection) and it’s a really refreshing approach: simple but powerful. I’m keeping an eye on it :)

    2. 3

      This is about the same as my experience writing for the web in Go. I’ve also ended up using the Gorilla mux and Gorp for struct mapping, both of those seem serviceable if a bit clunky compared to the Python ORMs I’m familiar with. The only real complaint I’ve had is that the template library doesn’t do a whole lot of error reporting so debugging template issues can be a bit slow.