Rumah >pembangunan bahagian belakang >Golang >Bagaimana Saya Boleh Dapatkan Maklumat Pemanggil dalam Go?
Mendapatkan Maklumat Pemanggil dalam GoLang
Adakah wajar untuk menentukan maklumat tentang fungsi yang menggunakan fungsi lain dalam GoLang? Jika fungsi, seperti foo() di bawah, dipanggil dari main(), bagaimana kita boleh mengetahuinya?
func foo() { // Perform some actions } func main() { foo() }
Walaupun sesetengah bahasa, seperti C#, menyediakan ciri seperti atribut CallerMemberName untuk mendapatkan semula ini data, GoLang menggunakan pendekatan yang berbeza.
Penyelesaian: runtime.Caller
GoLang menawarkan fungsi runtime.Caller untuk memperoleh maklumat tentang pemanggil. Berikut ialah sintaksnya:
func Caller(skip int) (pc uintptr, file string, line int, ok bool)
Contoh 1: Memaparkan Nama Fail Pemanggil dan Nombor Talian
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() }
Contoh 2: Mengumpul Maklumat Terperinci dengan masa jalan. FuncForPC
Untuk maklumat yang lebih komprehensif, anda boleh menggunakan runtime.FuncForPC bersamaan dengan runtime.Pemanggil:
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() }
Atas ialah kandungan terperinci Bagaimana Saya Boleh Dapatkan Maklumat Pemanggil dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!