GoLang에서 발신자 정보 얻기
GoLang에서 다른 함수를 호출한 함수에 대한 정보를 알아내는 것이 가능합니까? 아래 foo()와 같은 함수가 main()에서 호출되는 경우 어떻게 알 수 있나요?
func foo() { // Perform some actions } func main() { foo() }
C#과 같은 일부 언어에서는 이를 검색하기 위해 CallerMemberName 속성과 같은 기능을 제공합니다. GoLang은 다른 접근 방식을 사용합니다.
해결책: Runtime.Caller
GoLang은 호출자에 대한 정보를 얻기 위해 Runtime.Caller 함수를 제공합니다. 구문은 다음과 같습니다.
func Caller(skip int) (pc uintptr, file string, line int, ok bool)
예 1: 발신자 파일 이름 및 줄 번호 표시
package main import ( "fmt" "runtime" ) func foo() { _, file, no, ok := runtime.Caller(1) if ok { fmt.Printf("Called from %s#%d\n", file, no) } } func main() { foo() }
예 2: 런타임으로 세부 정보 수집. FuncForPC
더 자세한 정보를 원하시면 Runtime.Caller와 함께 Runtime.FuncForPC를 사용할 수 있습니다:
package main import ( "fmt" "runtime" ) func foo() { pc, _, _, ok := runtime.Caller(1) details := runtime.FuncForPC(pc) if ok && details != nil { fmt.Printf("Called from %s\n", details.Name()) } } func main() { foo() }
위 내용은 Go에서 발신자 정보를 어떻게 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!