Je suis assez nouveau sur golang, cela devrait être une réponse simple, mais j’ai essayé de chercher partout sans succès.
Comment accéder à une variable globale déclarée/init dans mon main.go dans un autre package/fichier .go? Continue à me dire que la variable est indéfinie (je sais que les variables globales sont mauvaises, mais ceci est juste pour être utilisé comme un horodatage)
en main.go
var StartTime = time.Now()
func main(){...}
essaye d'accéder à StartTime dans un fichier .go différent, mais continue de ne pas définir StartTime
Je voudrais "injecter" la variable starttime à la place, sinon vous avez une dépendance circulaire entre les packages.
main.go
var StartTime = time.Now()
func main() {
otherPackage.StartTime = StartTime
}
otherpackage.go
var StartTime time.Time
Je crée un fichier dif.go
contenant votre code:
package dif
import (
"time"
)
var StartTime = time.Now()
En dehors du dossier, je crée mon main.go
, ça va!
package main
import (
dif "./dif"
"fmt"
)
func main() {
fmt.Println(dif.StartTime)
}
Les sorties:
2016-01-27 21:56:47.729019925 +0800 CST
Structure du répertoire de fichiers:
folder
main.go
dif
dif.go
Ça marche!
Je suggère d'utiliser la méthode courante d'importation.
Je vais d’abord expliquer la façon dont il a été appelé "importation relative" peut-être de cette façon à cause d’une erreur
Deuxièmement, je vais expliquer la manière habituelle d’importer.
PREMIÈRE:
Dans go version> = 1.12, quelques nouveaux conseils sur le fichier d'importation ont été apportés et certains changements ont été apportés.
1- Vous devez placer votre fichier dans un autre dossier. Par exemple, je crée un fichier dans le dossier "model". Le nom du fichier est "example.go".
2- Vous devez utiliser des majuscules pour importer un fichier!
3- Utilisez des majuscules pour les variables, structures et fonctions que vous souhaitez importer dans d'autres fichiers
Remarque: Il n'y a aucun moyen d'importer le fichier main.go dans un autre fichier.
le répertoire de fichiers est:
root
|_____main.go
|_____model
|_____example.go
c'est un exemple.go:
package model
import (
"time"
)
var StartTime = time.Now()
et ceci est main.go, vous devez utiliser des majuscules lorsque vous souhaitez importer un fichier. "Mod" a commencé avec des majuscules
package main
import (
Mod "./model"
"fmt"
)
func main() {
fmt.Println(Mod.StartTime)
}
REMARQUE!!!
NOTE: je ne recommande pas ce type d'importation!
SECONDE:
(importation normale)
le meilleur moyen d'importer un fichier est:
votre structure devrait être comme ceci:
root
|_____github.com
|_________Your-account-name-in-github
| |__________Your-project-name
| |________main.go
| |________handlers
| |________models
|
|_________gorilla
|__________sessions
et voici un exemple:
package main
import (
"github.com/gorilla/sessions"
)
func main(){
//you can use sessions here
}
vous pouvez donc importer "github.com/gorilla/sessions" partout où vous le souhaitez ... importez-le.