Maison > développement back-end > Golang > Pourquoi mon code Go signale-t-il une erreur « Déclaré et non utilisé » sur la variable « prev » malgré son utilisation ?

Pourquoi mon code Go signale-t-il une erreur « Déclaré et non utilisé » sur la variable « prev » malgré son utilisation ?

Mary-Kate Olsen
Libérer: 2024-10-31 20:14:02
original
261 Les gens l'ont consulté

Why Does My Go Code  Report a

Erreur déclarée et non utilisée dans Go, malgré l'utilisation de la variable

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

Comprendre l'erreur

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.

Résoudre le problème

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

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!

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