6
기본적으로 임의의 함수 또는 슬라이스가있는 경우 int를 반환하는 것들만 선택하거나 int를 취하는 것들만 선택할 수 있습니까?Golang의 함수 목록에서 함수 선택
나는 반사 패키지를 사용해야한다고 생각했지만, 문서를 읽는 것만으로 정확히 어떻게해야하는지 정확하게 알 수 없었습니다.
기본적으로 임의의 함수 또는 슬라이스가있는 경우 int를 반환하는 것들만 선택하거나 int를 취하는 것들만 선택할 수 있습니까?Golang의 함수 목록에서 함수 선택
나는 반사 패키지를 사용해야한다고 생각했지만, 문서를 읽는 것만으로 정확히 어떻게해야하는지 정확하게 알 수 없었습니다.
이 프로그램은 기능을 매개 변수로 int
을 복용하거나 반환 인쇄하는 int
:
package main
import (
"fmt"
"reflect"
)
func main() {
funcs := make([]interface{}, 3, 3) // I use interface{} to allow any kind of func
funcs[0] = func (a int) (int) { return a+1} // good
funcs[1] = func (a string) (int) { return len(a)} // good
funcs[2] = func (a string) (string) { return ":("} // bad
for _, fi := range funcs {
f := reflect.ValueOf(fi)
functype := f.Type()
good := false
for i:=0; i<functype.NumIn(); i++ {
if "int"==functype.In(i).String() {
good = true // yes, there is an int among inputs
break
}
}
for i:=0; i<functype.NumOut(); i++ {
if "int"==functype.Out(i).String() {
good = true // yes, there is an int among outputs
break
}
}
if good {
fmt.Println(f)
}
}
}
나는 코드가 설명 자기
참조이라고 생각하면 [golang 너트에이 스레드 (은 https ://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/uGTYQzJ9Cfs) 도움을 받으십시오. –
구현하려는 솔루션 대신 해결하려는 문제를 설명 할 수 있습니까? Go에서이 작업을 수행하는 더 쉬운 방법이 있습니다. 시도중인 접근 유형은 Go에서 매우 어색합니다. 당신이하려는 일에 따라, 디스트로이의 제안이 유일한 선택 일 수도 있지만, 혼란스럽지 않은 일을 할 수있는 아주 좋은 기회가 있습니다. – jorelli
아니, 내가하려는 것은 실제로 혼란 스럽다. 각 노드가 함수 인 그래프를 만드는 것을 고려하십시오. 임의의 함수 목록이 주어 졌을 때 그래프의 공간을 검색하려고합니다. 그 아이디어는 기계 학습과 같은 함수 근사자로 사용될 수 있다는 것입니다. 나는 디스트로이의 해결책이 내가 원하는 것이라고 믿는다. 당신이 더 좋은 언어를 제안하고 싶다면 나는 아이디어에 열중하고 있습니다. 나는 C#이 그것을 할 수 있다고 들었다. – placeybordeaux