Comment accéder aux variables globales
Je suis assez nouveau dans golang, ce qui devait être une simple réponse, mais j'ai essayé de chercher en tous lieux, avec pas de chance.
Comment puis-je accéder à une variable globale qui a été déclarée/init dans ma main.aller dans une autre .forfait/fichier? Continue à me dire que la variable n'est pas définie (je sais que les variables globales sont mauvais, mais c'est juste pour être utilisé comme un timestamp)
en main.aller
var StartTime = time.Now()
func main(){...}
de la tentative d'accès StartTime dans un autre .fichier aller
mais reçois StartTime undefined
- Double Possible de aller construire fonctionne très bien mais aller courir échoue
- Est la première lettre du nom de la variable en majuscule?
- Oui, il est en majuscule, et mon aller de l'échec de la construction
- êtes-vous y compris tous les fichiers lors de l'exécution du programme? C'est, lors de l'exécution du code, exécutez-vous aller courir fichier1.aller fichier2.allez ..etc
- Oui, pour être plus concis, j'ai une variable appelée 'var StartTime = temps.Now()' dans ma main.aller, Mais quand j'essaie d'accéder à StartTime dans un autre .aller de le même répertoire, il dit à ses indéfini, aurais-je inclure "main" dans la .allez fichier que im essayant de l'appeler?
- Hmm, il serait peut-être mieux à "injecter" la variable dans l'autre paquet, par exemple, ne pourrait-on pas définir la variable dans l'autre paquet dans la méthode main de votre paquet principal? Si vous passez par référence, alors la variable est toujours partagé...
- Malheureusement je ne peux pas le faire, à cause de la façon dont notre système est construit. Je suppose que si elle est globale, tous les fichiers d'avoir accès à elle, mais je pense aller ne vous permet pas de le faire
- Je crains que vous allez avoir une référence circulaire autrement. Votre principale.forfait dépend de la "otherPackage", et maintenant vous voulez faire de la "otherPackage" dépendante sur le paquet..
- Ok, j'ai fait que changer donc désormais main, dans mon répertoire src et puis theres un répertoire dans le répertoire src appelée timeStamp avec les autres .fichier aller, mais il me donne toujours la même StartTime undefined
- oui, parce que vous n'êtes pas à l'importation de
main
dans l'autre paquet, de sorte qu'il n'existe (à la fois parce que vous ne pouvez pas avoir une dépendance circulaire, et parce que vous ne pouvez pas importer unmain
paquet.)
Vous devez vous connecter pour publier un commentaire.
Je "injecter" starttime variable au lieu de cela, sinon vous avez une dépendance circulaire entre les paquets.
principal.aller
otherpackage.aller
J'ai créer un fichier
dif.go
qui contient votre code:À l'extérieur du dossier j'ai créer mon
main.go
, c'est ok!Sorties:
Répertoire des fichiers de structure:
Ça marche!!!
Je suggère d'utiliser de la façon la plus courante de l'importation.
Je vais d'abord vous expliquer la façon dont on l'appelle "relative à l'importation" peut-être que de cette façon, la cause de l'erreur
Deuxième, je vais vous expliquer la façon la plus courante de l'importation.
PREMIÈRE:
Dans go version >= 1.12 il y a quelques nouveaux trucs à propos de fichier d'importation et somethings changé.
1 - Vous devez placer vos fichiers dans un autre dossier par exemple, j'ai créer un fichier dans le "modèle" du dossier et le nom du fichier "exemple.aller"
2 - Vous devez utiliser des majuscules lorsque vous souhaitez importer un fichier!
3 - Utilisez des Majuscules pour les variables, les structures et les fonctions que vous souhaitez importer dans un autre fichiers
Avis: Il n'est pas possible d'importer de la main.aller dans un autre fichier.
répertoire du fichier est:
c'est un exemple.aller:
et c'est le principal.aller vous devriez utiliser des majuscules lorsque vous souhaitez importer un fichier. "Mod" a commencé avec les majuscules
NOTE!!!!!
NOTE: je ne recommande pas ce type d'importation!
DEUXIÈME:
(normal importation)
la meilleure façon d'importation de fichier est:
votre structure doit être comme ceci:
et c'est un exemple:
de sorte que vous pouvez importer "github.com/gorilla/sessions" dans tous les où que vous voulez...suffit de l'importer.