247 votes

Organiser un projet d’aller de plusieurs fichiers

Remarque: cette question est liée à ce un seul, mais deux ans est un temps très long à l'histoire.

Quel est le moyen standard pour organiser un Aller projet en cours de développement ?

Mon projet est un package mypack, donc je suppose que j'ai mis tous les .allez les fichiers dans un mypack répertoire.

Mais ensuite, je tiens à le tester, durant le développement, j'ai donc besoin d'au moins un fichier de déclarer l' main paquet, de sorte que je peux faire, go run trypack.go

Comment dois-je organiser cela ? Dois-je faire pour faire aller de l'installer mypack chaque fois que je veux l'essayer ?

173voto

jdi Points 38029

Je voudrais vous recommandons de consulter cette page sur Comment Écrire Go Code

C'documents à la fois de la structure de votre projet dans un go build de manière conviviale, et aussi comment écrire des tests. Les Tests n'ont pas besoin d'être un cmd à l'aide de l' main package. Ils peuvent simplement être TestX fonctions nommées dans le cadre de chaque paquet, puis go test permettra de les découvrir.

La structure proposée dans ce lien dans votre question est un peu dépassé, maintenant avec la sortie de Go 1. Vous ne serait plus nécessaire de placer un pkg sous-répertoire src. Le seul 3 spec-concernant les répertoires sont les 3 dans la racine de votre GOPATH: bin, pkg, src . En dessous de la src, vous pouvez simplement placer votre projet mypack, et en dessous, c'est l'ensemble de vos .allez les fichiers, y compris les mypack_test.aller

go build intégrera ensuite à la racine pkg et bin.

Si votre GOPATH pourrait ressembler à ceci:

~/projects/
    bin/
    pkg/
    src/
      mypack/
        foo.go
        bar.go
        mypack_test.go

export GOPATH=$HOME/projects

$ go build mypack
$ go test mypack

60voto

Jeremy Wall Points 10643

JDI a les bonnes informations concernant l’utilisation de `` . J’ajouterais que si vous avez l’intention d’avoir un fichier binaire, ainsi vous pouvez ajouter un niveau supplémentaire dans les répertoires.

en cours d’exécution construira le paquet ainsi que ses dépendances en cours d’exécution construira le binaire ainsi que ses dépendances qui inclut probablement le `` bibliothèque.

51voto

trans Points 430

J'ai étudié un certain nombre de Go de projets et il est un peu juste de la variation. Vous pouvez sorte de dire qui est à venir à partir de C et qui est à venir à partir de Java, comme l'ancien dépotoir à peu près tout dans les projets de la racine du répertoire d' main paquet, et, plus tard, ont tendance à tout mettre dans un src répertoire. Ni est optimal. Chaque avoir des conséquences b/c ils ont pour effet d'importer des chemins et comment les autres peuvent les réutiliser.

Pour obtenir les meilleurs résultats que j'ai travaillé sur l'approche suivante.

myproj/
  main/
    mypack.go
  mypack.go

mypack.go est package mypack et main/mypack.go est (évidemment) package main.

Si vous avez besoin des fichiers de prise en charge, vous avez deux choix. Soit de les garder tous dans le répertoire de racine, ou de mettre privé fichiers de prise en charge en lib sous-répertoire. E. g.

myproj/
  main/
    mypack.go
  myextras/
    someextra.go
  mypack.go
  mysupport.go

Ou

myproj.org/
  lib/
    mysupport.go
    myextras/
      someextra.go
  main/
    mypack.go
  mypage.go

Seulement placer les fichiers dans un lib répertoire s'ils ne sont pas destinés à être importés par un autre projet. En d'autres termes, s'ils sont privés des fichiers de support. C'est le principe de base d' lib --pour séparer le privé et le public interfaces.

Faire les choses de cette façon vous donnera un bon chemin d'importation, myproj.org/mypack de réutiliser le code dans d'autres projets. Si vous utilisez lib alors interne des fichiers de prise en charge aura un chemin d'importation qui est indicatif de la, myproj.org/lib/mysupport.

Lors de la construction du projet, utilisez l' main/mypack, par exemple, go build main/mypack. Si vous avez plus d'un fichier exécutable que vous pouvez aussi séparer ces sous main sans avoir à créer des projets distincts. par exemple, main/myfoo/myfoo.go et main/mybar/mybar.go.

22voto

edap Points 113

Je trouve très utile pour comprendre comment organiser le code dans golang ce chapitre http://www.golang-book.com/11 du livre Caleb Doxsey

6voto

Gustav Points 1314

Conserver les fichiers dans le même répertoire et utilisation `` dans tous les fichiers.

Puis exécutez :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X