Golang에서 인터페이스의 메서드 집합에 액세스
인터페이스 내에서 메서드를 결정하는 것은 다양한 시나리오에 유용할 수 있습니다. 이 기사에서는 Golang에서 인터페이스의 메소드 세트를 효과적으로 인쇄하는 방법을 탐구합니다.
도전
다음 인터페이스가 주어졌을 때:
<code class="go">type Searcher interface { Search(query string) (found bool, err error) ListSearches() []string ClearSearches() (err error) }</code>
어떻게 인터페이스를 구현하는 구체적인 유형에 대한 사전 지식 없이 이러한 메소드(Search, ListSearches 및 ClearSearches)의 이름을 인쇄할 수 있습니까?
솔루션
reflect 패키지는 다음을 제공합니다. 런타임에 유형을 검사하는 수단입니다. 이 패키지를 활용하면 인터페이스의 유형 정보를 검색하고 해당 메소드를 검사할 수 있습니다.
<code class="go">package main import ( "fmt" "reflect" ) type Searcher interface { Search(query string) (found bool, err error) ListSearches() []string ClearSearches() (err error) } func main() { t := reflect.TypeOf(struct{ Searcher }{}) for i := 0; i < t.NumMethod(); i++ { fmt.Println(t.Method(i).Name) } }</code>
이 코드는 인터페이스 유형을 반영하고 해당 메소드를 반복하여 해당 이름을 인쇄함으로써 목표를 달성합니다.
출력
이 프로그램을 실행하면 원하는 출력이 생성됩니다.
Search ListSearches ClearSearches
위 내용은 Golang에서 인터페이스의 메소드 세트를 인쇄하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!