Go에서 소스 파일 정보 액세스
C/C와 같은 언어에서 __FILE__ 및 __LINE__ 매크로는 현재 파일에 대한 쉬운 액세스를 제공하고 줄 번호. Go도 유사한 메커니즘을 제공합니까?
답변:
예, Go는 이러한 목적으로 런타임.Caller 기능을 제공합니다. 호출 스택의 호출자 프레임을 가리키는 uintptr 변수 조각을 반환합니다. 그런 다음 fmt.Sprintf 함수를 사용하여 프레임에서 소스 파일 이름과 줄 번호 정보를 추출할 수 있습니다.
import ( "fmt" "runtime" ) func main() { // Get the caller function information frames := runtime.Callers(1, 2) // Extract the source file name and line number fileName, line := getFileInfo(frames[0]) fmt.Printf("Source file: %s, Line number: %d", fileName, line) } // Function to extract file name and line number from caller frame func getFileInfo(f uintptr) (string, int) { // Extract the file name frame := runtime.Frame(f) return frame.File, frame.Line }
추가로, Runtime.Caller는 함수 호출을 위한 소스 파일 정보도 제공할 수 있습니다.
// Get the caller function information frames := runtime.Callers(2, 3) // Skip the main function and runtime.Callers // Extract the source file name and line number fileName, line := getFileInfo(frames[0]) fmt.Printf("Source file: %s, Line number: %d", fileName, line)
위 내용은 Go는 C/C의 __FILE__ 및 __LINE__ 매크로와 같은 소스 파일 정보에 어떻게 액세스합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!