2017-09-21 3 views
4

Si je déclare des constantes comme suit, j'obtiens l'erreur 'const initializer dans os.Getenv (" MY_SECRET ") n'est pas une constante". Pourquoi est-ce?déclarer des constantes dans golang en utilisant os.Getenv entraîne 'const initializer dans os.Getenv ("MY_SECRET") n'est pas une constante'

Nouveauté de Go et je vois le type de retour de Getenv est une chaîne, mais je ne comprends pas pourquoi cela ne fonctionnerait pas comme une constante.

const (
    secret  = os.Getenv("MY_SECRET") 
    key  = os.Getenv("MY_KEY") 
) 

Répondre

5

Tout comme l'erreur indique, un constant must have a constant value. Vous ne pouvez pas le définir au retour d'une fonction. Il doit être être évalué au moment de la compilation (par exemple un littéral de chaîne). Si vous voulez stocker les valeurs des variables d'environnement recherchées au moment de l'exécution, vous devrez les stocker dans des variables, pas des constantes.

+0

Assez simple, pensé qu'il avait quelque chose à voir avec le temps de compilation. Je vous remercie. Je ne sais pas pourquoi les gens sont en train de voter une question légitime que je n'ai pas vu demandé auparavant sur S.O. – Michael

+1

Il y a de l'art antérieur, par exemple https://stackoverflow.com/questions/37976076/ – Adrian