Dans Golang, il est possible d'obtenir des informations sur la fonction de l'appelant. Considérez l'extrait de code suivant :
func foo() { // Do something } func main() { foo() }
La question se pose : comment pouvons-nous déterminer que foo a été invoqué depuis main ? D'autres langages, tels que C#, facilitent cette tâche en utilisant des attributs tels que CallerMemberName.
Heureusement, Golang fournit une solution avec la fonction runtime.Caller.
func Caller(skip int) (pc uintptr, file string, line int, ok bool)
Exemple n°1 : Impression du nom et de la ligne du fichier de l'appelant Number
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() }
Exemple n°2 : Récupération de plus d'informations avec runtime.FuncForPC
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() }
En utilisant ces exemples, vous pouvez facilement obtenir un aperçu de informations sur la fonction de l'appelant dans Go.
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!