Go에서 기존 유형 확장
가져온 패키지의 기존 유형에 사용자 정의 메소드를 추가하려고 하면 다음과 같은 오류가 발생할 수 있습니다. 로컬이 아닌 유형에서는 새 메소드를 정의할 수 없습니다. 이 제한은 다른 곳에 정의된 유형에 대한 수정을 허용하지 않는 Go의 유형 시스템에서 비롯됩니다.
이 제한을 우회하려면 두 가지 기본 접근 방식이 있습니다.
type MyRoute struct { *mux.Route } func (m *MyRoute) Subroute(tpl string, h http.Handler) *mux.Route { return m.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h) } type MyRouter struct { *mux.Router } func (r *MyRouter) Subroute(tpl string, h http.Handler) *mux.Route { return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h) }
type MyRoute embed mux.Route func (m *MyRoute) Subroute(tpl string, h http.Handler) *mux.Route { return m.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h) } type MyRouter embed mux.Router func (r *MyRouter) Subroute(tpl string, h http.Handler) *mux.Route { return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h) }
위 내용은 Go에서 기존 유형에 메서드를 어떻게 추가할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!