

Eine kurze Diskussion über govendor, das Go-Tool zur Paketabhängigkeitsverwaltung
govendor ist ein Befehlszeilentool zur Verwaltung von Go-Paketabhängigkeiten, das auf dem vendor
-Mechanismus basiert. Nicht-intrusive Integration mit nativen Anbietern und Unterstützung der Migration von anderen Abhängigkeitsmanagement-Tools. Es kann problemlos die Entwicklung und Verwaltung verschiedener Versionen desselben Pakets in verschiedenen Projekten ohne gegenseitiges Eindringen realisieren.
Anbieterfunktionen
Zu Beginn stellte Go kein geeignetes Paketverwaltungstool zur Verfügung. Die Herstellerfunktion ist ab Version 1.5 verfügbar, erfordert jedoch die manuelle Einstellung von Umgebungsvariablen GO15VENDOREXPERIMENT=1
.
Beim Ausführen des Befehls go build
oder go run
wird das Paket in der folgenden Reihenfolge durchsucht:
- Das Anbieterverzeichnis unter dem aktuellen Paket
- Aufwärtsverzeichnis Suchen Sie, bis Sie das Anbieterverzeichnis unter src finden
- Suchen Sie im GOROOT-Verzeichnis
- Suchen Sie nach abhängigen Paketen unter GOPATH
Wenn Version 1.6 veröffentlicht wird, ist dies der Fall Umgebungsvariable Der Wert von wurde standardmäßig auf 1 gesetzt und der Wert kann mit dem Befehl go env
angezeigt werden.
Bei der Veröffentlichung von Version 1.7 wurde diese Umgebungsvariable entfernt und die Funktion vendor
standardmäßig aktiviert.
Empfehlungen zur Verwendung durch den Anbieter
- Ein Bibliotheksprojekt (
main
, das nichtpackage
enthält) sollte keine externen Pakete im Verzeichnisvendor
in seiner eigenen Versionskontrolle speichern. es sei denn, es gibt einen besonderen Grund und Sie wissen, warum Sie es tun möchten. -
In einer Anwendung (einschließlich
main
undpackage
) wird empfohlen, dass es nur einvendor
-Verzeichnis gibt, und zwar im Verzeichnis auf Codebasisebene.Verwandte Tutorials: Go-Video-Tutorial
Govendor-Einführung
Govendor ist eine Paketverwaltung, die auf dem vendor
-Verzeichnis basiert Mechanismuswerkzeug.
- unterstützt die Analyse abhängiger Pakete aus dem Projektquellcode und deren Kopieren aus
$GOPATH
in das Verzeichnisvendor
des Projekts. - unterstützt die angegebene Version des Pakets und verwendet
vendor/vendor.json
Führen Sie eine Paket- und Versionsverwaltung durch, die PHPsComposer
ähnelt und die Verwendung des Befehls - zum Kopieren abhängiger Pakete aus der Datei
govendor add/update
$GOPATH
unterstützt ignoriert wird, kann es verwendet werden Abhängigkeitspakete wiederherstellen -
vendor/*/
kann direkt verwendet werdengovendor sync
Abhängigkeitspakete hinzufügen oder aktualisieren - Verfügbar
govendor fetch
Ein-Klick-Migration von anderen Paketverwaltungstools zu -
govendor migrate
vendor
Unterstützt Linux, macOS, Windows und sogar alle vorhandenen Betriebssystemegovendor
Unterstützt Git, Hg, SVN, BZR (muss einen Pfad angeben) - Govendor-Verwendung
Das Projekt muss sich im
-Verzeichnis befinden- Wenn die Go-Version 1.5 ist, müssen Sie festlegen die Umgebungsvariablen manuell
$GOPATH/src
-
set GO15VENDOREXPERIMENT=1
Installieren
go get -u github.com/kardianos/govendor
bequem und schnell nutzen zu können, empfiehlt es sich,
zu PATH hinzuzufügen. Linux/macOS ist wie folgt eingestellt:export PATH="$GOPATH/bin:$PATH"
govendor
Initialisierung$GOPATH/bin
Führen Sie den folgenden Befehl im Projektstammverzeichnis aus, um zu initialisieren:
govendor init
Es wird automatisch generiert in das Projektstammverzeichnisvendor
Verzeichnisse und
: vendor
{ "comment": "", "ignore": "test", "package": [], "rootPath": "govendor-example" }
vendor.json
Allgemeine Befehlevendor.json
Kopieren Sie alle Pakete, auf die verwiesen wurde, und unter
in das Verzeichnis$GOPATH
govendor add +external
Nach dem Login kopierenvendor
Kopieren Sie nur das angegebene Paket aus
govendor add gopkg.in/yaml.v2
Nach dem Login kopieren$GOPATH
Listen Sie alle im Code referenzierten Pakete und deren Status auf
govendor list
e github.com/gin-contrib/sse e github.com/gin-gonic/gin e github.com/gin-gonic/gin/binding e github.com/gin-gonic/gin/internal/json e github.com/gin-gonic/gin/render e github.com/golang/protobuf/proto e github.com/mattn/go-isatty e github.com/ugorji/go/codec e gopkg.in/go-playground/validator.v8 e gopkg.in/yaml.v2 pl govendor-example m github.com/json-iterator/go m golang.org/x/sys/unix
govendor list -v fmt
s fmt ├── e github.com/gin-contrib/sse ├── e github.com/gin-gonic/gin ├── e github.com/gin-gonic/gin/render ├── e github.com/golang/protobuf/proto ├── e github.com/ugorji/go/codec ├── e gopkg.in/go-playground/validator.v8 ├── e gopkg.in/yaml.v2 └── pl govendor-example
- in
- Außerdem eine Kopie speichern)
govendor fetch golang.org/x/net/context
Nach dem Login kopieren$GOPATH
Installieren Sie die angegebene Version des Pakets
govendor fetch golang.org/x/net/context@a4bbce9fcae005b22ae5443f6af064d80a6f5a55 govendor fetch golang.org/x/net/context@v1 # Get latest v1.*.* tag or branch. govendor fetch golang.org/x/net/context@=v1 # Get the tag or branch named "v1".
govendor fmt +local
Nach dem Login kopierenvendor
Nur Pakete innerhalb des kompilierten Projekts erstellen
govendor install +local
govendor test +local
govendor install +vendor,^program
Nach dem Login kopierenvendor
Alle abhängigen Pakete in das Verzeichnis
- vorhandener oder nicht vorhandener Pakete)
- Das Paket
vendor
govendor fetch +out
Nach dem Login kopieren$GOPATH
befindet sich bereits im Verzeichnis
govendor update +vendor
Nach dem Login kopierenvendor
$GOPATH
aktualisieren Paket in . Jetzt möchte ich das geänderte und nicht festgeschriebene Paket auf
govendor update -uncommitted <updated-package-import-path>
Nach dem Login kopieren$GOPATH
vendor
Fork aktualisieren, aber es wurde noch nicht zusammengeführt Codepaket
govendor fetch github.com/normal/pkg::github.com/myfork/pkg
- ruft jetzt Code von
- statt von ab. Informationen zu Abhängigkeitspaketen werden im
myfork
normal
aufgezeichnet. Wie kann ich Aktualisierungen abrufen? gefunden über
- , um zu sehen, wie das Quellpaket implementiert ist.
-
子命令 功能 init 创建 vendor
目录和vendor.json
文件list 列出&过滤依赖包及其状态 add 从 $GOPATH
复制包到项目vendor
目录update 从 $GOPATH
更新依赖包到项目vendor
目录remove 从 vendor
目录移除依赖的包status 列出所有缺失、过期和修改过的包 fetch 从远程仓库添加或更新包到项目 vendor
目录(不会存储到$GOPATH
)sync 根据 vendor.json
拉取相匹配的包到vendor
目录migrate 从其他基于 vendor
实现的包管理工具中一键迁移get 与 go get
类似,将包下载到$GOPATH
,再将依赖包复制到vendor
目录license 列出所有依赖包的 LICENSE shell 可一次性运行多个 govendor
命令Govendor-Statusparameter
状态 缩写 含义 +local l 本地包,即项目内部编写的包 +external e 外部包,即在 GOPATH
中、却不在项目vendor
目录+vendor v 已在 vendor
目录下的包+std s 标准库里的包 +excluded x 明确被排除的外部包 +unused u 未使用的包,即在 vendor
目录下,但项目中并未引用到+missing m 被引用了但却找不到的包 +program p 主程序包,即可被编译为执行文件的包 +outside 相当于状态为 +external +missing
+all 所有包 Die Unterbefehle, die Statusparameter unterstützen, sind:
list
,add
,update
,remove
,fetch
Go-Module
Das Tolle ist, dass der Beamte ab der Go-Version 1.11 leistungsfähigere Go-Module integriert hat, um die chaotische Situation der Go-Paketabhängigkeitsverwaltung über viele Jahre hinweg zu vereinheitlichen (das von Go offiziell eingeführte Dep-Tool). bevor es fast tot geboren wurde) und wird in Version 1.13 standardmäßig offiziell aktiviert.
Es wurde von der Community bevorzugt und dringend empfohlen. Es wird empfohlen, dass neue Projekte Go-Module verwenden.
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über govendor, das Go-Tool zur Paketabhängigkeitsverwaltung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Das sichere Lesen und Schreiben von Dateien in Go ist von entscheidender Bedeutung. Zu den Richtlinien gehören: Überprüfen von Dateiberechtigungen, Schließen von Dateien mithilfe von Verzögerungen, Validieren von Dateipfaden, Verwenden von Kontext-Timeouts. Das Befolgen dieser Richtlinien gewährleistet die Sicherheit Ihrer Daten und die Robustheit Ihrer Anwendungen.

Wie konfiguriere ich Verbindungspooling für Go-Datenbankverbindungen? Verwenden Sie den DB-Typ im Datenbank-/SQL-Paket, um eine Datenbankverbindung zu erstellen. Legen Sie MaxOpenConns fest, um die maximale Anzahl gleichzeitiger Verbindungen festzulegen. Legen Sie ConnMaxLifetime fest, um den maximalen Lebenszyklus der Verbindung festzulegen.

Der Unterschied zwischen dem GoLang-Framework und dem Go-Framework spiegelt sich in der internen Architektur und den externen Funktionen wider. Das GoLang-Framework basiert auf der Go-Standardbibliothek und erweitert deren Funktionalität, während das Go-Framework aus unabhängigen Bibliotheken besteht, um bestimmte Zwecke zu erreichen. Das GoLang-Framework ist flexibler und das Go-Framework ist einfacher zu verwenden. Das GoLang-Framework hat einen leichten Leistungsvorteil und das Go-Framework ist skalierbarer. Fall: Gin-Gonic (Go-Framework) wird zum Erstellen der REST-API verwendet, während Echo (GoLang-Framework) zum Erstellen von Webanwendungen verwendet wird.

JSON-Daten können mithilfe der gjson-Bibliothek oder der json.Unmarshal-Funktion in einer MySQL-Datenbank gespeichert werden. Die gjson-Bibliothek bietet praktische Methoden zum Parsen von JSON-Feldern, und die Funktion json.Unmarshal erfordert einen Zieltypzeiger zum Unmarshalieren von JSON-Daten. Bei beiden Methoden müssen SQL-Anweisungen vorbereitet und Einfügevorgänge ausgeführt werden, um die Daten in der Datenbank beizubehalten.

Best Practices: Erstellen Sie benutzerdefinierte Fehler mit klar definierten Fehlertypen (Fehlerpaket). Stellen Sie weitere Details bereit. Protokollieren Sie Fehler ordnungsgemäß. Geben Sie Fehler korrekt weiter und vermeiden Sie das Ausblenden oder Unterdrücken. Wrappen Sie Fehler nach Bedarf, um Kontext hinzuzufügen

Die FindStringSubmatch-Funktion findet die erste Teilzeichenfolge, die mit einem regulären Ausdruck übereinstimmt: Die Funktion gibt ein Segment zurück, das die passende Teilzeichenfolge enthält, wobei das erste Element die gesamte übereinstimmende Zeichenfolge und die nachfolgenden Elemente einzelne Teilzeichenfolgen sind. Codebeispiel: regexp.FindStringSubmatch(text,pattern) gibt einen Ausschnitt übereinstimmender Teilzeichenfolgen zurück. Praktischer Fall: Es kann verwendet werden, um den Domänennamen in der E-Mail-Adresse abzugleichen, zum Beispiel: email:="user@example.com", pattern:=@([^\s]+)$, um die Übereinstimmung des Domänennamens zu erhalten [1].

So beheben Sie häufige Sicherheitsprobleme im Go-Framework Angesichts der weit verbreiteten Einführung des Go-Frameworks in der Webentwicklung ist die Gewährleistung seiner Sicherheit von entscheidender Bedeutung. Im Folgenden finden Sie eine praktische Anleitung zur Lösung häufiger Sicherheitsprobleme mit Beispielcode: 1. SQL-Injection Verwenden Sie vorbereitete Anweisungen oder parametrisierte Abfragen, um SQL-Injection-Angriffe zu verhindern. Beispiel: constquery="SELECT*FROMusersWHEREusername=?"stmt,err:=db.Prepare(query)iferr!=nil{//Handleerror}err=stmt.QueryR

Backend Learning Path: Die Erkundungsreise von Front-End zu Back-End als Back-End-Anfänger, der sich von der Front-End-Entwicklung verwandelt, Sie haben bereits die Grundlage von Nodejs, ...