J'ai actuellement un seul fichier dans mon package principal appelé main.go
. Comment diviser le contenu de main.go
en plusieurs fichiers sans créer de package séparé car le code n'est pas réutilisable.
Je veux une structure de répertoires comme celle-ci:
$ ls foo
main.go
bar.go
bar.go
package main
import "fmt"
func Bar() {
fmt.Println("Bar")
}
Puis dans main.go
package main
func main() {
Bar()
}
Mais go run main.go
me donne:
# command-line-arguments
./main.go:4:2: undefined: Bar
*_test.go
dans votre dossier. Ensuite, vous devez (1)shopt -s ext glob
et (2)go run !(*_test).go
.go run ./cmd/myCmd/...
et cela a fonctionné pour moi. Peut-être que c'est la bonne façon quand il y a des_test.go
fichiers?go run ../your_folder
de l'intérieur du dossier de travail fonctionne pour moigo run .
Mise à jour d'août 2018, avec Go 1.11 , une section «Exécuter» indique:
Réponse originale janvier 2015
Comme mentionné dans " Comment compiler un programme Go composé de plusieurs fichiers? ",
go run
Attend une liste de fichiers, car il "compile et exécute lemain
package comprenant les fichiers source Go nommés".Vous pouvez donc certainement diviser votre
main
package en plusieurs fichiers avecgo run
.Cela diffère des
go build/go install
noms de packages attendus (et non des noms de fichiers go).Un simple
go build
produirait un exécutable nommé d'après le dossier parent.Notez que, comme illustré par ce fil , a
go run *.go
ne fonctionnerait pas dans une session Windows CMD, car le shell ne fait pas d'expansion de caractères génériques .la source
run
aide de l'invite de commande Windows?Comme mentionné, vous pouvez dire,
go run *.go
mais pour Windows, vous pouvez simplement lister les fichiers de script (puisque * .go ne fonctionnera pas) -go run main.go other.go third.go
la source
go run .
À mon avis, la meilleure réponse à cette question est cachée dans les commentaires de la première réponse.
Exécutez simplement ceci:
Cela exécutera tous les fichiers du package principal, mais ne donnera pas de message d'erreur comme
Félicitations à @BarthesSimpson
la source
Pour Windows, installez Cygwin et utilisez-le à la place de l'invite de commande. "go run * .go" fonctionnera alors.
la source
cmd.exe
Si vous essayez d'exécuter plusieurs fichiers sur localhost en utilisant gorilla mux, allez-y selon la dernière version (1.11). Essayez d'utiliser l'une des 2 commandes suivantes.
Assurez-vous que vous êtes dans le dossier source, c'est-à-dire go / src / FolderName avant d'exécuter la commande dans le terminal.
la source