Dans le code Go suivant, le compilateur signale une erreur "déclarée et non utilisée" sur la variable prev.
<code class="go">package main import "fmt" // fibonacci is a function that returns // a function that returns an int. func fibonacci() func() int { prev := 0 curr := 1 return func() int { temp := curr curr := curr + prev prev := temp return curr } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }</code>
Le compilateur identifie correctement que la variable prev est déclarée mais non utilisée. Cela signifie que la variable prev déclarée dans la fonction fibonacci n'est jamais référencée dans le code.
L'erreur peut être résolue en modifiant la fonction fibonacci pour utiliser correctement la variable prev. L'intention du code est susceptible de modifier la variable prev avec l'affectation prev := temp. Cependant, cette affectation crée une nouvelle variable locale nommée prev qui est masquée de la portée environnante. Au lieu de cela, l'affectation correcte doit utiliser l'opérateur = sans le mot-clé de déclaration :
<code class="go">func fibonacci() func() int { prev := 0 curr := 1 return func() int { temp := curr curr := curr + prev prev = temp return curr } }</code>
En supprimant le mot-clé de déclaration (:=) de la deuxième affectation précédente, le code modifie correctement la variable précédente héritée. Cela résout l'erreur du compilateur et permet au code de fonctionner comme prévu.
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!