Comment faire pour affecter la valeur par défaut si env var est vide?
En Gio, comment affecter une valeur par défaut si la variable d'environnement n'est pas définie?
En Python que je pouvais faire mongo_password = os.getenv('MONGO_PASS', 'pass')
où pass
est la valeur par défaut si MONGO_PASS
env var n'est pas définie.
J'ai essayé une instruction if basé sur os.Getenv
étant vide, mais cela ne semble pas fonctionner en raison de l'étendue de l'affectation de variable dans une instruction if. Et je suis la vérification de plusieurs env var, donc je ne peux pas agir sur cette information dans l'instruction if.
- Un
if
fonctionne. - il n'? J'ai essayé avec `` mpass := os.La fonction Getenv("MONGO_PASS") if len(mpass) == 0 { journal.Println("MONGO_PASS env var n'est pas défini, à l'aide de mongo par défaut") mpass := "pass" }`` Et j'obtiens ceci:
./server.go:63: mpass declared and not used
- Où la ligne 63 aligne avec mpass variable dans le bloc if (j'utilise mpass plus tard).
- Pensé à elle. Doit avoir été à l'aide de
=
au lieu de:=
sur lempass
dans leif
déclaration. Merci de m'appeler hors Volker 🙂
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas intégré les ramenant à une valeur par défaut,
de sorte que vous avez à faire un bon vieux if-else.
Mais vous pouvez toujours créer une fonction d'assistance pour faciliter la vie:
Noter que, comme @michael-hausenblas souligné dans un commentaire,
gardez à l'esprit que si la valeur de la variable d'environnement est vraiment vide, vous obtiendrez la valeur de secours à la place.
Même mieux que @ŁukaszWojciechowski a souligné, à l'aide de
os.LookupEnv
:value
et la chaîne vide""
est de longueur 0, cela signifie que lorsque l'env de la variable est définie à""
vous obtenez le secours/valeur par défaut plutôt que de la valeur (ce qui est trivialement""
). Dépend vraiment de votre cas d'utilisation, mais j'ai pensé qu'il est important de souligner car une fois j'ai rencontré cette erreur sémantique et brûlé quelques cycles de débogage elle 😉Getenv
vous pouvez utiliserLookupEnv
. Il renvoie égalementok boolean
statut que la valeur était bien là.Ce que vous cherchez est
os.LookupEnv
combiné avec unif
déclaration.Ici est janos la réponse de mise à jour pour utiliser LookupEnv:
Aller n'a pas exactement la même fonctionnalité que le Python ici; les plus idiomatiques façon de le faire, même si, je pense, est:
mongo_password := "pass"
est essentiel, car avec cemongo_password
est déclarée et définie (àpass
la valeur par défaut). Si vous n'avez pas cette ligne, alors je peux imaginer une erreur. Dans notre cas ci-dessus, seulementmp
la section locale du champ d'application de laif
, FWIW.Eu la même question que l'OP et trouvé quelqu'un encapsulé les réponses de ce fil dans une chouette bibliothèque qui est assez simple à utiliser, espérons que cela aide les autres!
https://github.com/caarlos0/env
D'avoir un code propre je fais ceci:
J'ai défini une fonction qui est utilisée dans l'ensemble de l'application
Dans le cas où vous êtes OK avec l'ajout de peu de dépendance, vous pouvez utiliser quelque chose comme https://github.com/urfave/cli