Go 코드 검사: 현재 함수 이름 검색
Go에서 현재 함수 이름을 얻는 것은 디버깅 및 추적에 매우 중요합니다. gcc의 FUNCTION 매크로는 이 기능을 제공하며 우리는 이를 Go에서 에뮬레이션하는 것을 목표로 합니다.
해결책
핵심은 런타임 패키지에 있습니다. 해결 방법은 다음과 같습니다.
import ( "fmt" "runtime" ) func trace() { pc := make([]uintptr, 10) // Need at least 1 entry runtime.Callers(2, pc) f := runtime.FuncForPC(pc[0]) file, line := f.FileLine(pc[0]) fmt.Printf("%s:%d %s\n", file, line, f.Name()) }
이 기능의 작동 방식은 다음과 같습니다.
업데이트된 예
Go 버전 1.7의 경우 권장되는 접근 방식은 런타임.FuncForPC 대신 런타임.CallersFrames를 사용하는 것입니다. 아래의 업데이트된 예:
import ( "fmt" "runtime" ) func trace() { pc := make([]uintptr, 10) // Need at least 1 entry runtime.CallersFrames(2, pc) frame, _ := runtime.CallersFrames(2, pc) fmt.Printf("%s:%d %s\n", frame[0].File, frame[0].Line, frame[0].Function) }
위 내용은 Go Code에서 현재 함수 이름을 어떻게 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!