>백엔드 개발 >Golang >Go에서 발신자 기능 정보를 어떻게 검색할 수 있나요?

Go에서 발신자 기능 정보를 어떻게 검색할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-12-20 08:56:11902검색

How Can I Retrieve Caller Function Information in Go?

Go에서 호출자 기능 정보 가져오기

Go에서 호출자 기능에 대한 정보를 얻을 수 있습니다. 이를 통해 호출 스택을 추적하고, 호출 컨텍스트를 식별하고, 다양한 디버깅 또는 프로파일링 작업을 수행할 수 있습니다.

runtime.Caller 사용

발신자 정보를 검색하는 기본 방법은 런타임입니다.Caller 기능. 정보를 검색하기 전에 건너뛸 스택 프레임 수를 나타내는 정수 인수를 사용합니다. 기본적으로 한 프레임을 건너뛰고 즉시 호출자에 대한 데이터를 제공합니다.

runtime.Caller 함수는 uintptr, 파일 경로를 나타내는 문자열, 줄 번호를 나타내는 정수 및 실행 여부를 나타내는 부울을 반환합니다. 검색이 성공했습니다.

예: 발신자 파일 및 회선 번호 가져오기

발신자 파일 이름 검색 시연 및 줄 번호:

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()
}

예: Runtime.FuncForPC를 사용하여 추가 정보 검색

더 자세한 정보를 보려면 Runtime.FuncForPC를 사용하여 호출자 함수를 나타내는 *Func 개체를 얻을 수 있습니다. 이 객체는 함수 이름 및 패키지 경로와 같은 추가 데이터에 대한 액세스를 제공합니다.

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에서 호출자 함수에 대한 정보를 쉽게 수집할 수 있으며 이는 디버깅, 프로파일링에 유용할 수 있습니다. , 기타 고급 프로그래밍 시나리오.

위 내용은 Go에서 발신자 기능 정보를 어떻게 검색할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.