如何解决如何向 Go 中的现有类型添加新方法??
正如编译器所提到的,您不能在另一个包中扩展现有类型。您可以定义自己的别名或子包,如下所示:
type MyRouter mux.Router
func (m *MyRouter) F() { ... }
或通过嵌入原始路由器:
type MyRouter struct {
*mux.Router
}
func (m *MyRouter) F() { ... }
...
r := &MyRouter{router}
r.F()
解决方法
我想在gorilla/mux
Route 和 Router 类型上添加一个方便的 util 方法:
package util
import(
"net/http"
"github.com/0xor1/gorillaseed/src/server/lib/mux"
)
func (r *mux.Route) Subroute(tpl string,h http.Handler) *mux.Route{
return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}
func (r *mux.Router) Subroute(tpl string,h http.Handler) *mux.Route{
return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}
但编译器告诉我
无法在非本地类型 mux.Router 上定义新方法
那么我将如何实现这一目标?我是否创建一个具有匿名 mux.Route 和 mux.Router 字段的新结构类型?或者是其他东西?
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。