web-dev-qa-db-fra.com

Comment compiler le programme Go composé de plusieurs fichiers?

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.

62
Vitaly

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

67
Denys Séguret

Lorsque vous séparez le code de main.go dans par exemple more.go, vous transmettez simplement ce fichier à go buildgo 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.

58
Kissaki

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

24
poopoothegorilla

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.

  1. accédez au dossier "adaptateur". Courir:
    go build main.go
  1. accédez au dossier "adaptateur". Courir:
    go build main.go
  1. naviguez vers GOPATH/src reconnaissez le chemin relatif du paquet principal, ici "myproject/adapter". Courir:
    go build myproject/adapter

le fichier exe sera créé dans le répertoire où vous vous trouvez actuellement.

0
Sayan Dey

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
0
Md. Alamin Mahamud

Vous pouvez utiliser

go build *.go 
go run *.go

les deux vont travailler aussi vous pouvez utiliser

go build .
go run .
0
Tushar Saha