L'éditeur de php explique pourquoi deux versions du même package sont téléchargées lors de l'utilisation de la commande "go get -u". La raison de ce problème réside dans le fonctionnement du mod go. go mod est un outil de gestion des dépendances introduit par le langage Go dans la version 1.11. Il téléchargera et gérera automatiquement les packages de dépendances basés sur le fichier go.mod du projet. Lorsque nous utilisons la commande "go get -u", elle vérifie la version du package de dépendances dans le fichier go.mod et essaie de télécharger la dernière version. Cependant, les mises à jour de version de certains packages peuvent dépendre de différentes versions d'autres packages, donc go mod téléchargera deux versions du package pour satisfaire la dépendance, c'est pourquoi deux versions du même package seront téléchargées.
J'utilise go get -u
来获取依赖于 golang.org/x/[email protected]
的软件包。我注意到它首先下载 golang.org/x/[email protected]
然后下载 golang.org/x/[email protected]
.
Puis je cours go clean -modcache
和 go get golang.org/x/text
,它下载了 golang.org/x/text
的 v0.4.0
,然后再次 go get -u entgo.io/ent
。这次 go 没有下载 golang.org/x/[email protected]
Alors, pourquoi go get -u
télécharge à la fois l'ancienne version et la dernière version lorsque la dernière version n'est pas disponible localement, et pourquoi ne télécharge-t-il pas l'ancienne version lorsque la dernière version est disponible localement ?
Parce que c'est un processus en deux étapes
Du point de vue de la programmation, il n'y a aucune bonne raison de les fusionner en un seul objectif consistant à "obtenir les dernières dépendances".
De la documentation de la commande go :
L'indicateur-u indique à get de mettre à jour les modules qui fournissent des dépendances pour le package nommé sur la ligne de commande afin d'utiliser des versions mineures ou des correctifs plus récents lorsqu'ils sont disponibles.
Cela signifie -u
gérer spécifiquement les modules dont dépend le package que vous récupérez, et non le module du package que vous récupérez.
De plus, il semble que -u
与将 v0
版本中的任何更改视为主要版本更改的 Go 惯用法无关,因此不能出于原则轻易推荐使用 -u
n'a rien à voir avec l'idiome Go consistant à traiter tout changement dans la version v0
comme un changement de version majeur, donc l'utilisation de ne peut pas être facilement recommandée par principe. Le readme de golang.org/x/test
Les versions mineures sont considérées comme majeures jusqu'à ce que la version x/text atteigne la version 1.0.0. Par conséquent, passer de 0.1.0 à 0.2.0 est considéré comme une mise à niveau majeure de la version. 🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!