인터페이스에서 메서드 이름 목록 가져오기
Go에서 리플렉션을 사용하면 런타임에 프로그램의 내부 구조를 검사하고 조작할 수 있습니다. . 여기에는 메소드 이름과 같은 인터페이스 유형에 대한 정보에 액세스하는 기능이 포함됩니다.
다음 인터페이스를 고려하십시오.
type FooService interface {
Foo1(x int) int
Foo2(x string) string
}
리플렉션을 사용하여 이 인터페이스의 메소드 이름 목록을 얻으려면:
t := reflect.TypeOf((*FooService)(nil)).Elem()
이 줄은 FooService 인터페이스를 구현하는 구체적인 유형에 대한 Reflect.Type을 검색합니다.
for i := 0; i NumMethod() 함수는 인터페이스의 메서드 수를 반환합니다.
- 메서드 이름 가져오기:
s = append(s, t.Method(i).Name)
Method(i) 함수는 Reflect.Method 인덱스 i의 메서드를 나타내는 메서드 개체입니다. 이 개체의 이름 필드에는 메서드 이름이 포함됩니다.
결과 목록 s에는 메서드 이름 ["Foo1", "Foo2"]가 포함됩니다.
설명:
- (*FooService)(nil) 구문은 FooService 인터페이스의 익명 인스턴스에 대한 포인터를 만드는 데 사용됩니다. 이는 인터페이스에 대한 Reflect.Type을 얻는 데 필요합니다.
- Elem() 메서드는 인터페이스 유형 자체 대신 인터페이스를 구현하는 구체적인 유형에 대한 Reflect.Type을 반환합니다.
- NumMethod() 함수는 구체적인 유형이 추가 메소드를 구현하는 경우에도 인터페이스에 선언된 메소드 수를 반환합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3