【发布时间】:2015-05-02 06:23:55
【问题描述】:
我想在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 字段的新结构类型?还是别的什么?
【问题讨论】:
-
有趣的是,扩展方法被认为是 C# 的非面向对象 (
“extension methods are not object-oriented”),但今天看到它们时,我立即想起了 Go 的接口(以及它重新思考面向对象的方法),然后我就有了这个问题。
标签: go extension-methods