함수가 주어지면 이름을 얻을 수 있습니까? 말 :이동에서 함수 이름을 얻는 방법?
func foo() {
}
func GetFunctionName(i interface{}) string {
// ...
}
func main() {
// Will print "name: foo"
fmt.Println("name:", GetFunctionName(foo))
}
내가 runtime.FuncForPC 도움이 될 말을 들었다,하지만 난 그것을 사용하는 방법을 이해하지 못했습니다.
이것이 작동하는 것처럼 보일 수도 있지만 여기에 몇 가지주의가 필요할 수 있습니다. .Pointer()에 대한 문서 "v의 Kind가 Func 인 경우 반환 된 포인터는 기본 코드 포인터이지만 단일 함수를 고유하게 식별 할만큼 충분하지는 않습니다. v가 무 함수 값 인 경우에만 결과가 0이라는 것을 보장합니다. " – jochen
@jochen은 "단일 기능이 아닙니다"는 오 탐지 (즉, 다른 기능의 포인터)를 반환 할 수 있음을 의미합니까? – themihai
@themihai 필자가 인용 한 문장은 https://golang.org/pkg/reflect/#Value.pointer에 대한 모든 문서입니다. 그러나 따옴표는 다른 함수에 대해 동일한 포인터를 얻을 수 있음을 나타냅니다. 그리고이 경우,'GetFunctionName'은 다른 함수들에 대해 같은 이름을 반환 할 수 있습니까? – jochen