Go에서 기존 유형으로 작업할 때 기능을 강화하기 위해 사용자 정의 메소드로 확장해야 할 필요성이 발생할 수 있습니다. 그러나 제공된 샘플 코드에서 알 수 있듯이 로컬이 아닌 유형에 메소드를 직접 추가하는 것은 금지됩니다.
이 제한을 극복하려면 주로 두 가지 접근 방식을 고려해야 합니다.
1. 래퍼 유형 정의:
예:
type MyRouter struct { mux.Router // Anonymous field } func (m *MyRouter) F() { ... } r := &MyRouter{origRouter} r.F()
2. 원본 유형 포함:
예:
type MyRouter struct { *mux.Router // Embedded field } func (m *MyRouter) F() { ... } router := &MyRouter{origRouter} router.F()
두 접근 방식 모두 기존 유형을 확장할 수 있습니다. 원래 패키지를 수정하지 않고. 새 유형을 생성하거나 원본 유형을 삽입하여 사용자 정의된 유형의 인스턴스에서 작동할 수 있는 추가 메소드를 정의할 수 있습니다.
위 내용은 Go에서 기존 유형에 사용자 정의 메소드를 어떻게 추가할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!