Golang undefined variable
J'ai 2 go de fichiers
/Utilisateurs/nom d'utilisateur/go/src/Test/src/main/Test.aller
package main
import "fmt"
func main() {
fmt.Printf(SomeVar)
}
et le fichier /Users/nom d'utilisateur/go/src/Test/src/main/someFile.aller
package main
const SomeVar = "someFile"
Cependant, je n'ai de cesse d'obtenir d'erreur du compilateur
/Users/username/go/src/Test/src/main/Test.go:6: undefined: SomeVar
Quelqu'un peut m'expliquer pourquoi est-SomeVar labeld comme indéfini?
Comment êtes-vous d'invoquer le compilateur? Si vous avez exécuté
1. Utilisation
Montrez votre
go build Test.go
, alors il ne prend en compte qu'un seul fichier pour faire partie de l'emballage.1. Utilisation
go build
- go run est vraiment idéal pour la simple et unique fichier de programmes. 2. N'appelez pas le dossier "main".Montrez votre
$GOPATH
veuillezOriginalL'auteur Dave | 2014-07-05
Vous devez vous connecter pour publier un commentaire.
Essayer
OriginalL'auteur theaidem
Citation:
Donc faire:
Voir aussi
Maintenant, il n'. Votre message est apparu dans la faible qualité de la file d'attente.
Cela m'a aidé! J'ai été en cours d'exécution dans cette question d'essayer de faire fonctionner mon grand programme dans Gogland. J'ai résolu en allant à l'exécution des configurations de commutation et le type de projet de répertoire!
OriginalL'auteur warvariuc
Vous code est correct:
someFile.go
etTest.go
appartiennent à la même package (main
)SomeVar
est unconst
déclaré au haut niveau, il a donc un paquet de bloc de portée, à savoir lemain
paquet bloc de portéeSomeVar
est visible et peut être consulté dans les deux fichiers(si vous avez besoin d'examiner la portée dans Go, veuillez vous référer à la Spécification du langage - les Déclarations et la Portée).
Pourquoi vous obtenez une
undefined
erreur alors?Vous avez probablement lancé
go build Test.go
ougo run Test.go
, à la fois la production de la sortie suivante, lancée depuis/Users/username/go/src/Test/src/main
:Vous pouvez trouver la raison ici: Commande aller
Si vous lancez
go build
ougo run
avec une liste de.go
fichiers, il les traite comme une liste de fichiers source de la spécification d'un seul paquet, c'est à dire, il pense qu'il n'y a pas d'autres morceaux de code dans lemain
paquet, d'où l'erreur.La solution est y compris tous les
.go
fichiers:go build
travaillera également avec pas d'arguments, la construction de tous les fichiers qu'il trouve dans le package:Note 1: les commandes ci-dessus, reportez-vous au forfait local et, comme telle, doit être lancé à partir de la
/Users/username/go/src/Test/src/main
répertoireNote 2: si d'autres réponses déjà proposé des solutions valables, j'ai décidé d'ajouter un peu plus de détails ici pour aider la communauté, puisque c'est une question qui revient souvent quand vous commencez à travailler avec Go 🙂
OriginalL'auteur Para