Maison > développement back-end > Golang > Comment puis-je simuler le mot-clé « statique » de C pour les variables locales dans Go ?

Comment puis-je simuler le mot-clé « statique » de C pour les variables locales dans Go ?

Linda Hamilton
Libérer: 2024-12-03 12:18:10
original
853 Les gens l'ont consulté

How Can I Simulate C's 'static' Keyword for Local Variables in Go?

Préserver les variables locales en Go : une alternative au "statique" du C

En Go, contrairement au C, il n'y a pas d'équivalent direct au Mot-clé 'static' pour les variables locales. Cependant, il est toujours possible de créer des variables locales qui conservent leurs valeurs entre les appels de fonction en exploitant le concept de fermetures.

La fermeture à la rescousse

Une fermeture en Go est une fonction qui capture et partage l'environnement de la fonction dans laquelle elle a été créée. Cela inclut l'accès aux variables définies en dehors de la portée de la fermeture. En tirant parti des fermetures, nous pouvons simuler un comportement similaire à celui d'une variable locale statique en C.

Exemple en Go

Considérez le code suivant :

func main() {
   
    x := 0
    func() {
        defer fmt.Println("x:", x)
        x++
    }()
    for i := 0; i < 10; i++ {
        x++
    }
}
Copier après la connexion

Ici, nous définissons une fonction (anonyme) qui se ferme sur la variable 'x' dans la fonction 'main'. Ceci capture la valeur actuelle de « x » lorsque la fonction est exécutée.

Sortie :

x: 1
x: 2
x: 3
....
x: 10
Copier après la connexion

Comme vous pouvez le voir, la valeur de « x » s'incrémente au sein de la fonction fermée tout en restant indépendant du « x » qui est incrémenté dans la fonction « principale ». Cela se comporte effectivement comme une variable locale statique, préservant sa valeur entre les appels de fonction.

Remarque :

Cette approche fonctionne car la fonction capture la valeur de « x » par -référence, plutôt que par valeur. Cela garantit que toutes les modifications apportées à « x » dans la fonction sont reflétées dans la portée englobante.

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