当前位置:网站首页>Modules golang

Modules golang

2022-07-04 09:37:00 Reconstruction du crématoire

Créer un nouveaumodule

In$GOPATH/srcDossiers en dehors(Par exemple,//hello),Créer un nouveaugoDocumentation,Par exemple,hello.go.Et écrivons - luitest.Après l'exécution

PASS
ok _/hello

Parce qu'on travaille dans $GOPATHEt à l'extérieur de n'importe quel module,go La commande ne connaît pas le chemin d'importation du répertoire courant(Le chemin d'importation est un identifiant de chaîne unique qui identifie le paquet)Donc un faux chemin d'importation a été créé en fonction de l'emplacement du Répertoire _/hello

Utilisonsgo mod initInitialiser le dossier àmoduleC'est parti.!

go mod init demo.com/hello

go mod initSera écritgo.modDocumentation

go.modIl n'apparaîtra que dans le Répertoire racine du module.Le chemin d'importation du paquet de sous - répertoires sous le module se compose du chemin du module plus le chemin du sous - répertoire.Par exemple, il y a des sous - répertoires sous le module/world,Alors le chemin d'importation estdemo.com/hello/world

Ajouter une dépendance

goCommande en utilisantgo.modListe des versions spécifiques des modules dépendants pour résoudre l'importation.Quandgo.modNon spécifié,Les dernières dépendances sont automatiquement trouvées,Ajouter àgo.mod

Sauf, bien sûr.go.modEn plus des dépendances directes énumérées dans,Il y a aussi des dépendances indirectes.Par exemple,rsc.io/quoteCe module repose également surrsc.io/sampler,Alorsrsc.io/samplerIl sera également téléchargé

Peut passergo list -m all Liste toutes les dépendances du module actuel

En outre,go.sum Les valeurs de hachage de chiffrement sont également enregistrées pour se fier à la version du module .Mais...go.sumCe n'est paspackage-lock.json, Seules les dépendances directes et indirectes du module actuel seront enregistrées , Et somme de contrôle .

Mise à jour des dépendances

On peut passer pargo get Pour passer à la dernière version dépendante .

Mais il y a parfois des incompatibilités

$ go get rsc.io/sampler
go: finding rsc.io/sampler v1.99.99
go: downloading rsc.io/sampler v1.99.99
go: extracting rsc.io/sampler v1.99.99
$ go test
--- FAIL: TestHello (0.00s)
    hello_test.go:8: Hello() = "99 bottles of beer on the wall, 99 bottles of beer, ...", want "Hello, world."
FAIL
exit status 1
FAIL    example.com/hello   0.014s
$

Tous les modules disponibles peuvent être listés taggedVersion, Puis choisissez une version compatible pour télécharger

$ go list -m -versions rsc.io/sampler
rsc.io/sampler v1.0.0 v1.2.0 v1.2.1 v1.3.0 v1.3.1 v1.99.99

$ go get rsc.io/[email protected]

Supprimer les dépendances

go mod tidy Ces dépendances inutilisées sont effacées

Ajouter une version principale dépendante

Supposons que nous devions utiliser plusieurs versions principales différentes d'une seule dépendance

package hello

import (
    "rsc.io/quote"
    quoteV3 "rsc.io/quote/v3"
)

func Hello() string {
    
    return quote.Hello()
}

func Proverb() string {
    
    return quoteV3.Concurrency()
}

Go Chaque version différente du module utilise un chemin de module différent .

replace RemplacerrequireDéclaration de dépendance

module demo

replace outter => /local/outter

require (
			outter v1.0.0
)

Ref

  1. https://go.dev/blog/using-go-modules
  2. https://thewebivore.com/using-replace-in-go-mod-to-point-to-your-local-module/
原网站

版权声明
本文为[Reconstruction du crématoire]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/185/202207040908111284.html

随机推荐