Maison > développement back-end > Golang > Comment puis-je obtenir des informations sur la fonction de l'appelant dans Golang ?

Comment puis-je obtenir des informations sur la fonction de l'appelant dans Golang ?

Susan Sarandon
Libérer: 2024-12-26 05:50:32
original
484 Les gens l'ont consulté

How Can I Get Caller Function Information in Golang?

Récupération des informations sur la fonction de l'appelant dans Golang

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()
}
Copier après la connexion

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)
Copier après la connexion

Exemples d'implémentation

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()
}
Copier après la connexion

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()
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal