I am trying to write a web application and given the effort to write clean code.
I have a controller for handle incoming request and base controller that all controller will borrow the fields.
This is my base controller
type Controller struct {
    Request  *http.Request
    Response http.ResponseWriter
    // Reqeust language
    lang string
    // HTML parts
    Title   string
    body    string
    head    string
    content string
    view    string
    errors  []string
    success []string
}
// And methods followed here
func (self *Controller) renderHeadView() { .....
and my sign up controller
type Controller struct {
    base.Controller
    user *account
}
func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
    self.Title = "Sign Up"
    self.Request = r
    self.Response = rw
    self.lang = header.Language(self.Request)
    self.user = &account{lang: self.lang}
    switch self.Request.Method {
    case "GET":
        self.get()
    case "POST":
        if err := self.post(); err != nil {
            self.get()
        } else {
            // If everything was successfully
            return
        }
    }
    self.RenderResponseView()
}
and my activate controller
type Controller struct {
    base.Controller
}
func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
    self.Title = "Activate account"
    self.Request = r
    self.Response = rw
    self.lang = header.Language(self.Request)
    self.RenderResponseView()
}
As you can see, the ServeHTTP method looks pretty much the same. I am thinking of to move ServeHTTP into base controller and then provide an method to call for special work. To clarify what I mean look at the following code snippet(base controller)
func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
    self.Title = "Activate account"
    self.Request = r
    self.Response = rw
    self.lang = header.Language(self.Request)
    // here would come function for special work
    function()
    self.RenderResponseView()
}
I have no idea how to provide this implementation. I would be very happy, if someone could give me some suggestions.
 
    