인터페이스의 Reflect.Type 가져오기
reflect 패키지의 인터페이스로 작업할 때 Reflect.Type 개체를 가져와야 합니다. 특정 유형이 인터페이스를 구현하는지 확인합니다. 이 문서에서는 인터페이스의 Reflect.Type을 검색하는 방법을 살펴봅니다.
유형이 인터페이스를 구현하는지 확인
reflect.Type.Implements() 메서드는 Reflect.Type 객체를 작성하고 해당 유형이 지정된 인터페이스를 구현하는지 여부를 나타내는 부울을 반환합니다. 그러나 초기화되지 않은 인터페이스 유형의 Reflect.Type을 얻으면 이러한 유형의 Kind() 메소드에 액세스하면 패닉이 발생하므로 문제가 발생할 수 있습니다.
해결책: 인터페이스의 Reflect.Type 가져오기
인터페이스의 Reflect.Type을 얻으려면 다음 접근 방식을 사용하십시오.
방법 1:
var err error t := reflect.TypeOf(&err).Elem()
이 메서드는 &err 포인터를 역참조하여 실제 오류 유형을 가져온 다음 Elem() 메서드를 사용하여 기본 인터페이스의 Reflect.Type을 검색합니다.
방법 2(한 줄):
t := reflect.TypeOf((*error)(nil)).Elem()
이것은 one-liner는 인터페이스에 대한 nil 포인터를 직접 생성한 다음 Elem()을 사용하여 인터페이스의 Reflect.Type을 추출하여 방법 1과 동일한 결과를 얻습니다.
두 가지 방법 모두 사용 , 이제 획득한 Reflect.Type 객체를 사용하여 유형이 Reflect.Type.Implements()를 사용하여 인터페이스를 구현하는지 확인할 수 있습니다.
위 내용은 Go에서 인터페이스의 `reflect.Type`을 어떻게 얻나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!