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 un main paquet.)

InformationsquelleAutor Nighthee | 2016-01-27