我在博客上看到了一个方法,并决定尝试让它发挥作用,到目前为止,我还没有成功。我想和
gorilla/mux
和结构/接口。这里的主要问题是,当结构作为函数参数传递时,我无法访问接口。
主要任务:
package main
import (
router "routers/web"
)
func main() {
router.Serve()
}
路由器/路由器.go
package router
import (
"net/http"
"github.com/gorilla/mux"
)
func Route(path string, ct interface{}) {
r := mux.NewRouter()
//ct prints {Controller:{ControllerInterfaceGet:<nil>}}
if c, ok := ct.(ControllerInterfaceGet); ok {
r.HandleFunc(path, http.HandlerFunc(c.Get)).Methods("GET")
}
}
func Init() {
http.ListenAndServe(":8080", nil)
}
路由器/web/web.go:
package routerweb
import (
"controllers/web"
"routers"
)
func Serve() {
router.Route("/", webtest.TestController{})
router.Init()
}
控制器/控制器.go:
package controllers
import (
"net/http"
)
type Controller struct {
ControllerInterfaceGet
}
type ControllerInterfaceGet interface {
Get(w http.ResponseWriter, r *http.Request)
}
最后是特定路线的控制器:
package webtest
import (
"controllers"
"net/http"
)
type TestController struct {
controllers.Controller
}
func (p TestController) Get(w http.ResponseWriter, r *http.Request) {
println("Hello World")
}
我已经做了一些调试,每当我试图编译它时,它都会给出以下错误:
# routers
.\router.go:14:18: undefined: ControllerInterfaceGet
知道怎么解决这个问题吗?