Donc, j'ai un petit programme qui consiste en trois fichiers, tous appartenant au même paquet (main), mais quand je "vais construire main.go", la construction n'aboutit pas. Lorsqu'il ne s'agissait que d'un fichier (main.go), tout fonctionnait bien. Maintenant que j'ai fait quelques efforts pour séparer le code, il semble que le compilateur soit incapable de trouver le contenu extrait de main.go et placé dans ces deux autres fichiers (situés dans le même répertoire que main.go) . Ce qui entraîne des erreurs "type 'non défini'".
J'ai lu quelque chose sur la définition de la variable GOPATH, alors j'ai essayé
set GOPATH=%cd%
go build main.go
mais cela aussi n'a pas fonctionné.
Toute aide est appréciée.
Supposons que vous écriviez un programme appelé myprog:
Mettez tous vos fichiers dans un répertoire comme celui-ci
myproject/go/src/myprog/xxx.go
Ajoutez ensuite myproject/go
à GOPATH
Et courir
go install myprog
De cette façon, vous pourrez ajouter d’autres packages et programmes dans myproject/go/src si vous le souhaitez.
Référence: http://golang.org/doc/code.html
(Ce document manque toujours aux nouveaux arrivants et est souvent mal compris au début. Il devrait recevoir la plus grande attention de l'équipe Go, l'OM
Lorsque vous séparez le code de main.go
dans par exemple more.go
, vous transmettez simplement ce fichier à go build
go run
/go install
également.
Donc, si vous avez déjà couru
go build main.go
vous maintenant simplement
go build main.go more.go
Pour plus d'informations:
go build --help
États:
If the arguments are a list of .go files, build treats them as a list
of source files specifying a single package.
Notez que go build
et go install
diffèrent de go run
en ce sens que les deux premiers états prévoient _/noms de package comme arguments, tandis que le dernier attend les fichiers go. Cependant, les deux premiers accepteront également les fichiers go comme l’installe l’installation.
Si vous vous demandez: build construira juste build
les packages/fichiers, install
produira des fichiers objet et binaires dans votre GOPATH et run
compilera et exécutera votre programme.
Vous pouvez aussi simplement courir
go build
dans votre dossier de projet myproject/go/src/myprog
Ensuite, vous pouvez simplement taper
./myprog
exécuter votre application
Ouaip! C'est très simple et c'est là que la stratégie de paquetage entre en jeu. il y a trois manières de ma connaissance. structure de dossier:
GOPATH/src/github.com/abc/myproject/adapter/main.go pkg1 pkg2 avertissement: l'adaptateur peut contenir uniquement les packages main et les répertoires Sun.
go build main.go
go build main.go
go build myproject/adapter
le fichier exe sera créé dans le répertoire où vous vous trouvez actuellement.
Cela dépend de la structure de votre projet. Mais le plus simple est:
go build ./... -o ./myproject
puis exécutez ./myproject
.
Supposons que la structure de votre projet ressemble à ceci
- hello
|- main.go
alors vous allez juste dans le répertoire du projet et lancez
go build -o ./myproject
puis exécutez ./myproject
sur Shell.
ou
# most easiest; builds and run simultaneously
go run main.go
supposons que votre fichier principal soit imbriqué dans un sous-répertoire comme un cmd
- hello
|- cmd
|- main.go
alors vous courrez
go run cmd/main.go
Vous pouvez utiliser
go build *.go
go run *.go
les deux vont travailler aussi vous pouvez utiliser
go build .
go run .