J'ai créé une bibliothèque comme module pour un usage personnel en dehors de "GOPATH" dans le dossier "database" avec cette commande "go mod init database", et je ne sais pas:
Système d'exploitation: Windows 7, Go: v1.11
La solution prête à l'emploi la plus simple et la plus efficace consiste à placer votre package/module database
dans un VCS (par exemple, github.com), afin que d'autres packages (à l'intérieur d'autres modules) puissent simplement s'y référer en important ça aime:
import "github.com/someone/database"
Si vous le faites, vous n'avez même pas besoin de jouer avec le go.mod
les fichiers manuellement, tout sera pris en charge par l'outil go: il reconnaîtra et résoudra automatiquement cette dépendance, téléchargera et installera le package requis, et mettra également à jour go.mod
automatiquement.
Si vous ne voulez pas utiliser un VCS (par exemple, vous êtes juste en train d'expérimenter ou vous n'avez pas encore décidé quoi utiliser), vous pouvez toujours le faire. Le comment est détaillé dans l'officiel Go Wiki: Puis-je travailler entièrement en dehors de VCS sur mon système de fichiers local?
Vous avez donc créé un dossier database
en dehors de GOPATH
et vous y avez créé un module. Et vous avez créé un autre module, appelons-le main
, et vous souhaitez utiliser ce package database
.
Ce que vous devez faire, c'est:
go.mod
de votre module main
doit répertorier le package database
comme une "exigence". Donnez un nom VCS temporaire à votre package database
:
require (
example.com/me/database v0.0.0
)
Vous devez indiquer à l'outil go où se trouve ce package, car le nom de package complet que nous avons utilisé n'est qu'un nom temporaire/fantaisie. Utilisez la directive replace
pour que ce package database
pointe vers un dossier sur votre disque local; vous pouvez utiliser des chemins absolus et relatifs:
replace example.com/me/database => ../database
Et c'est tout.
Voyons un exemple de travail. Créons un module pretty
. Créez un dossier pretty
contenant 2 fichiers:
pretty.go:
package pretty
import "fmt"
func Pretty(v ...interface{}) {
fmt.Println(v...)
}
go.mod (peut être créé en exécutant go mod init pretty
):
module pretty
Créons maintenant un autre module principal. Créons un dossier osinf
(ce peut être n'importe quoi) à côté du dossier pretty
. 2 fichiers dedans:
osinf.go (notez que nous avons l'intention d'utiliser notre package/module pretty
, nous l'importons par "example.com/me/pretty"
):
package main
import "example.com/me/pretty"
func main() {
pretty.Pretty("hi")
pretty.Pretty([]int{1, 3, 5})
}
go.mod:
module main
require example.com/me/pretty v0.0.0
replace example.com/me/pretty => ../pretty
Et c'est tout.
Fonctionnement go run osinf.go
dans le dossier osinf
, la sortie est:
hi
[1 3 5]