Mengakses Maklumat Fail Sumber dalam Go
Dalam bahasa seperti C/C , makro __FILE__ dan __LINE__ menyediakan akses mudah kepada fail semasa dan nombor baris. Adakah Go menawarkan mekanisme yang serupa?
Jawapan:
Ya, Go menyediakan masa jalan. Fungsi pemanggil untuk tujuan ini. Ia mengembalikan sepotong pembolehubah uintptr yang menunjuk ke bingkai pemanggil dalam timbunan panggilan. Fungsi fmt.Sprintf kemudiannya boleh digunakan untuk mengekstrak nama fail sumber dan maklumat nombor baris daripada bingkai.
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 }
Selain itu, masa jalan.Pemanggil juga boleh memberikan maklumat fail sumber untuk fungsi panggilan:
// 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)
Atas ialah kandungan terperinci Bagaimanakah Go Mengakses Maklumat Fail Sumber Seperti Makro __FILE__ dan __LINE__ C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!