Только разбираюсь в golang (до этого работал на Rails).
Так сказать магия рельсов наложила свой отпечаток.
Разбираюсь с созданием web приложения на go пока без модных фреймворков (Martini и выше).
Для того чтобы разобраться взял вот этот пример
https://github.com/haruyama/golang-goji-sample
здесь Goji + части от Gorilla
Вот что смутило - зачем все данные в контроллер (http handler) передают через контекст, который заполняют в middleware? Видел это, наверное во всех примерах в нете. Почему нельзя просто сделать глобальную переменную, проинизиализировать в main и просто обращаться из контроллера? В этом есть какое-то скрытый смысл на go или так делают что было удобно?
UPD: Вот нашел в одной статье вот такую интересную информацию:
There's three ways that Go's web libraries/frameworks have attacked the problem of request contexts:
A global map, with *http.Request as the key, mutexes to synchronise writes, and middleware to cleanup old requests (gorilla/context)
A strictly per-request map by creating custom handler types (goji)
Structs, and creating middleware as methods with pointer receivers or passing the struct to your handlers (gocraft/web).
Вот тут по ходу подтверждение моих догадок :)
www.alexedwards.net/blog/understanding-mutexes