J'ai actuellement un seul fichier dans mon paquet 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épertoire 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
go run .
Le code ci-dessus fonctionne réellement. Le problème était que j'avais besoin de courir
go run *.go
au lieu de
go run main.go
Mise à jour août 2018, avec Go 1.11 , un section "Exécuter" indique:
La commande
go run
autorise désormais un seul chemin d'importation, un nom de répertoire ou un modèle correspondant à un seul package.
Ceci permet à _go run pkg
_ ou _go run dir
_, plus important encore _go run .
_
Réponse originale janvier 2015
Comme mentionné dans " Comment compiler le programme Go composé de plusieurs fichiers? ", go run
attend une liste de fichiers, car il "compile et exécute le fichier main
paquetage contenant les fichiers sources nommés Go ".
Vous pouvez donc certainement diviser votre paquet main
en plusieurs fichiers avec _go run
_.
Cela diffère de go build/go install
qui attend les noms de paquetages (et non les noms de fichiers).
Un simple _go build
_ produirait un exécutable nommé d'après le dossier parent.
Notez que, comme illustré par ce fil , un _go run *.go
_ ne fonctionnerait pas dans une session Windows CMD, car le shell ne fait pas de développement générique .
Comme mentionné, vous pouvez dire go run *.go
, mais pour Windows, vous pouvez simplement lister les fichiers de script (car * .go ne fonctionnera pas) - go run main.go other.go third.go
À mon avis, la meilleure réponse à cette question est cachée dans les commentaires en tête de la réponse.
Il suffit de lancer ceci:
go run .
Ceci exécutera tous les fichiers du paquet principal, mais pas donnera un message d'erreur comme
go run: cannot run *_test.go files (main_test.go)
Félicitations à @BarthesSimpson
Si vous essayez d'exécuter plusieurs fichiers sur localhost à l'aide de gorilla mux, accédez à la dernière version (1.11). Essayez d’utiliser l’une des 2 commandes suivantes.
allez installer && FolderName -port 8081.
allez construire && ./FolderName -port 8081.
Assurez-vous que vous êtes dans le dossier source c'est-à-dire allez/src/FolderName avant d'exécuter la commande dans le Terminal.
Pour Windows, installez Cygwin et utilisez-le à la place de la commande Invite. "go run * .go" fonctionnera alors.