Mendapatkan Nama Fungsi Semasa dalam Go
Untuk mengesan aliran pelaksanaan program Go, mungkin wajar untuk mengetahui nama fungsi semasa. Ini berguna untuk tujuan penyahpepijatan atau pengelogan.
Untuk mendapatkan nama fungsi semasa dalam Go, seseorang boleh menggunakan fungsi runtime.FuncForPC, yang mengambil pembilang program (PC) sebagai hujahnya dan mengembalikan fungsi yang sepadan objek. Berikut ialah contoh cara ini boleh digunakan:
package main import ( "fmt" "runtime" ) func trace() { pc := make([]uintptr, 10) // at least 1 entry needed 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()) } func main() { trace() }
Apabila dilaksanakan, program ini akan mencetak output berikut:
/path/to/file.go:13 trace
Output ini menunjukkan bahawa fungsi surih dipanggil dalam talian 13 fail file.go.
Nota: Dalam Go versi 1.7 dan lebih baru, adalah disyorkan untuk menggunakan runtime.CallersFrames bukannya runtime.FuncForPC. Contoh yang dikemas kini menggunakan runtime.CallersFrames adalah seperti berikut:
package main import ( "fmt" "runtime" ) func trace() { pcs := make([]uintptr, 10) n := runtime.CallersFrames(2, pcs) frames := runtime.CallersFrames(n) frame, _ := frames.Next() fmt.Printf("%s:%d %s\n", frame.File, frame.Line, frame.Function) } func main() { trace() }
Atas ialah kandungan terperinci Bagaimana Saya Boleh Mendapatkan Nama Fungsi Semasa dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!