Go에서 함수 이름을 검색하는 방법
런타임 중에 Go에서 함수 이름을 가져오는 것이 바람직한 경우가 많습니다. 이는 디버깅 목적, 로깅 또는 기타 메타프로그래밍 작업에 유용할 수 있습니다.
runtime.FuncForPC: 기본 솔루션
Go는 내장 기능인 런타임을 제공합니다. FuncForPC는 PC(프로그램 카운터) 주소가 주어지면 함수 이름을 검색할 수 있습니다. 하지만 PC 주소를 얻으려면 리플렉션이 필요하므로 번거로울 수 있습니다.
간단한 접근 방식
프로세스를 단순화하려면 리플렉트와 런타임을 사용하는 간단한 솔루션이 필요합니다. FuncForPC를 구현할 수 있습니다:
package main import ( "fmt" "reflect" "runtime" ) func foo() { } func GetFunctionName(i interface{}) string { return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name() } func main() { fmt.Println("name:", GetFunctionName(foo)) }
이 함수는 일반 인터페이스 매개변수 i를 받아들이고 다음과 관련된 함수의 이름을 반환합니다. 그 인터페이스. 이 경우 foo는 이름을 검색하는 함수입니다.
사용 예
다음 예에서는 GetFunctionName 함수의 사용을 보여줍니다.
package main import ( "fmt" ) func foo() { } func main() { fmt.Println("name:", GetFunctionName(foo)) }
이 프로그램을 실행하면 출력:
name: foo
이것은 GetFunctionName 함수가 foo 함수의 이름을 성공적으로 검색했음을 확인합니다.
위 내용은 런타임에 Go 함수의 이름을 어떻게 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!