Il est possible d'obtenir des informations sur la fonction de l'appelant dans Go. Cela vous permet de suivre la pile d'appels, d'identifier le contexte d'appel et d'effectuer diverses opérations de débogage ou de profilage.
La principale méthode pour récupérer les informations sur l'appelant est le runtime.Caller fonction. Il faut un argument entier indiquant le nombre de frames de pile à ignorer avant de récupérer les informations. Par défaut, il saute une image, fournissant des données sur l'appelant immédiat.
La fonction runtime.Caller renvoie un uintptr, une chaîne représentant le chemin du fichier, un entier représentant le numéro de ligne et un booléen indiquant si le la récupération a réussi.
Pour démontrer la récupération du nom du fichier de l'appelant et du numéro de ligne. numéro de ligne :
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() }
Pour des informations plus détaillées, vous pouvez utiliser runtime.FuncForPC pour obtenir un objet *Func représentant la fonction appelante. Cet objet donne accès à des données supplémentaires, telles que le nom de la fonction et le chemin du package.
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() }
Avec ces méthodes, vous pouvez facilement collecter des informations sur la fonction appelante dans Go, ce qui peut être utile pour le débogage, le profilage , et d'autres scénarios de programmation avancés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!