Comment importer des packages locaux sans gopath

J'ai utilisé GOPATH mais pour cette question, je suis en face ça n'aide pas. Je veux être en mesure de créer des packages qui sont spécifiques à un projet:

myproject/
├── binary1.go
├── binary2.go
├── package1.go
└── package2.go

J'ai essayé de plusieurs façons, mais comment puis-je obtenir package1.go de travailler dans le binary1.go ou la binary2.go et ainsi de suite?

Par exemple; je veux être en mesure de import "package1" et ensuite être en mesure d'exécuter go build binary1.go et tout fonctionne bien sans l'erreur de lancer le package ne peut pas être trouvé sur GOROOT ou GOPATH. La raison pour laquelle j'ai besoin de ce type de fonctionnalité est pour les grands projets; je ne veux pas avoir à faire référence à plusieurs autres paquets ou les garder dans un fichier de grande taille.

  • Vous êtes censé mettre les fichiers source pour chaque binaire dans son propre répertoire.
  • Tous les .go fichiers dans un seul répertoire font partie d'un même ensemble, et vous n'avez pas besoin de import fichiers dans le même package (c'est à dire, le même répertoire). Vous avez mentionné travaillant à l'extérieur de GOPATH, qui est l'une des capacités de la nouvelle Passer les modules du système. Cette répondre couvre la structure du module, l'importation de packages locaux, organiser des paquets au sein d'un module, ou de ne pas avoir plusieurs modules dans un seul dépôt, etc.
  • Et ce comportement est ok avec tout le monde? Que, fondamentalement, vous ne pouvez pas importer votre local sous-paquets, sauf si vous spécifiez l'ensemble de la git/repo/to/my/project chemin? Je ne vois pas la raison pourquoi quelqu'un voudrait de ce comportement. Si vous déplacez votre projet à un autre endroit (c'est à dire le Panneau de l'image), vous devrez modifier tous les chemins de nouveau? Je suis à la recherche de réponses à la question pourquoi c'est si compliqué.
InformationsquelleAutor | 2013-07-09