Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Golang MVC structure

I searched many sites and I saw a lot of sources in GitHub and I haven't found a solution.

I created an MVC website pattern in Golang:

  • app
    • controllers
    • models
    • lib (All the features class/functions)
    • middleware
    • router.go
  • resources
    • views
  • main.go

My question is: How to inject config to have everywhere settings and other implemented class that will always be needed (like load speed single page).

One more thing(additionally): Can anyone recommend me a good material or transcribe MVC tricks idea works MVC with Golang (General useful information).

like image 837
Patryk Gtfo Avatar asked Aug 28 '16 09:08

Patryk Gtfo


1 Answers

You can have one file called for example MainController where you can make functions for accessing database, sessions, config files and so on. All you have to do really from there is to say something like this for example (inherit stuff from some other controller):

//MyController.go
type App struct {
    MainController
}

func (c Application) MyControllerFunc() returnTypeHere(http.Response for example) {

    //c.getDatabaseName is function from MainController that reads information from some plain text file or json file or similar
    someInfoFromConfigFile = c.getDatabaseName()
    var str []string
    str = append(str,  someInfoFromConfigFile)

    //RenderJson is function that render http response as json (Content type plain/json)
    return c.RenderJson(str)
}

But if you need mvc I suggest that you use some framework (Revel for example). I am using it all the time. It gives you that basic mvc functionality if you like and all other stuff is really up to you. You keep you business logic in some helpers, models in models file etc.

You can check Revel main controller structure here: https://github.com/revel/revel/blob/master/controller.go

like image 153
pregmatch Avatar answered Oct 06 '22 01:10

pregmatch