Maison > développement back-end > Golang > Comportement d'affectation de variable globale dans ':='

Comportement d'affectation de variable globale dans ':='

PHPz
Libérer: 2024-02-09 14:50:25
avant
781 Les gens l'ont consulté

Comportement daffectation de variable globale dans :=

L'éditeur PHP Xiaoxin vous présentera le comportement d'affectation des variables globales dans ":=". Dans les versions antérieures de PHP, l'affectation aux variables globales devait être déclarée à l'aide du mot-clé « global ». Cependant, depuis que PHP version 7.4 a introduit la nouvelle syntaxe ":=" pour l'affectation des variables globales, nous pouvons attribuer des valeurs aux variables globales de manière plus concise, éliminant ainsi l'étape d'utilisation du mot-clé "global". Cette nouvelle fonctionnalité améliore non seulement la lisibilité et la maintenabilité du code, mais réduit également la quantité de code inutile et nous permet d'utiliser les variables globales plus facilement. Regardons de plus près cette nouvelle fonctionnalité !

Contenu de la question

Même si le code dans main 函数 作用域中使用了 :=,全局 level 仍被分配来自 getlevel() renvoie la valeur de la valeur. Quelqu'un peut-il expliquer en quoi il s'agit d'un comportement prévisible et documenté à l'aide d'une spécification de langage. Mon idée était de mieux lire les spécifications, mais je ne l'ai évidemment pas fait.

Code : https://go.dev/play/p/4pz0vl-2snn

65bcfadd4058

Sortie :-

info <nil>
print: info
Copier après la connexion

Solution de contournement

Dans votre exemple, la nouvelle variable locale pour := 实际上引入了一个名为 level , elle est selon la spécification, car la portée globale est différente de n'importe quelle portée de fonction :

Les déclarations de variables courtes peuvent redéclarer des variables, à condition qu'elles aient été initialement déclarées avec le même type dans le même bloc (ou la même liste d'arguments, si le bloc est un corps de fonction).

La raison pour laquelle vous voyez le comportement décrit est que vous imprimez une chaîne vide après level 的使用实际上都没有引用全局变量。 main 中的用法是从 := 中新增的局部变量,print 中的用法是函数参数。删除参数(在声明和调用站点中),您将看到 printprint: .

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!

Étiquettes associées:
source:stackoverflow.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal