```go
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
// Controller
type Controller struct{}
// Index
func (c *Controller) Index(ctx *gin.Context) {
ctx.JSON(http.StatusOK, gin.H{
"message": "Hello World!",
})
}
// Router
func Router() *gin.Engine {
router := gin.Default()
controller := &Controller{}
// Index
router.GET("/", controller.Index)
return router
}
func main() {
router := Router()
router.Run()
}
```