Go에서 매개변수 및 반환 유형을 기준으로 함수 필터링
함수 모음이 있고 해당 함수를 선택적으로 선택해야 하는 시나리오를 생각해 보세요. 정수를 반환하거나 정수를 입력 매개 변수로 사용하는 등 특정 기준을 충족합니다. 이 작업은 Golang의 리플렉션을 사용하여 수행할 수 있습니다.
reflect 패키지는 Go의 기본 메타데이터 유형 및 값에 대한 액세스를 제공합니다. Reflect.ValueOf 및 Reflect.Type을 활용하면 함수 유형을 검사하고 해당 매개변수 및 반환 값에 대한 정보를 검색할 수 있습니다.
정수를 반환하는 함수를 선택하려면 목록의 각 함수를 반복하고 다음을 사용합니다. Reflect.ValueOf를 사용하여 해당 값을 얻습니다. 그런 다음 Reflect.Type을 사용하여 함수 유형을 검색하고 NumOut 및 Out을 사용하여 반환 값을 검사합니다. 반환 값의 유형이 "int"인 경우 함수를 "좋음"으로 표시하여 포함합니다.
마찬가지로 정수를 매개변수로 사용하는 함수를 선택하려면 함수의 NumIn 매개변수를 반복하고 Reflect.In을 사용하여 각 입력의 유형을 확인하십시오. 입력 유형 중에 "int"가 있으면 함수를 "good"으로 표시합니다.
다음은 이 접근 방식을 사용하는 방법을 보여주는 예제 프로그램입니다.
<code class="go">package main import ( "fmt" "reflect" ) func main() { funcs := make([]interface{}, 3, 3) funcs[0] = func(a int) int { return a + 1 } funcs[1] = func(a string) int { return len(a) } funcs[2] = func(a string) string { return ":(" } for _, fi := range funcs { f := reflect.ValueOf(fi) functype := f.Type() good := false for i := 0; i < functype.NumIn(); i++ { if functype.In(i).String() == "int" { good = true break } } for i := 0; i < functype.NumOut(); i++ { if functype.Out(i).String() == "int" { good = true break } } if good { fmt.Println(f) } } } ```` </code>
위 내용은 리플렉션을 사용하여 매개변수 및 반환 유형을 기반으로 Go 함수를 필터링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!