Der Unterschied zwischen //go:build- und // build-Direktiven
Die //go:build-Direktive ist die neue bedingte Kompilierungsdirektive eingeführt in Go 1.17, soll die // Build-Direktive ersetzen. Während Sie mit beiden Direktiven die Bedingungen angeben können, unter denen eine Datei in das Paket aufgenommen werden soll, bietet //go:build mehrere wichtige Verbesserungen:
-
Konsistenz: Die // Die go:build-Syntax stimmt mit anderen vorhandenen Go-Anweisungen und -Pragmas überein, z. B. //go:generate.
-
Erweitert Ausdrücke: //go:build unterstützt standardmäßige boolesche Ausdrücke (z. B. //go:build foo && bar), während // build eine weniger intuitive Syntax für AND (Kommas) und OR (Leerzeichen) verwendet.
-
Codeformatierung: Die //go:build-Direktive wird automatisch von gofmt formatiert. Dies vermeidet häufige Fehler, wie etwa das Nichtlassen einer Leerzeile zwischen der Direktive und der Paketanweisung.
Go 1.18 hat //go:build als bevorzugte Direktive eingeführt, mit Plänen, // build nach und nach zu entfernen Linien. Der Übergang zwischen den beiden Anweisungen wird wie folgt gehandhabt:
- In Go 1.18 und höher ist //go:build die primäre Build-Einschränkungsanweisung.
- Wenn einer Datei ein // fehlt go:build-Direktive, alle // Build-Direktiven gelten weiterhin.
- Wenn eine Datei sowohl //go:build- als auch // build-Direktiven enthält, wird //go:build berücksichtigt die Quelle der Wahrheit, und gofmt aktualisiert // entsprechend.
Das obige ist der detaillierte Inhalt von„//go:build' von Go 1.17: Wie unterscheidet es sich von „// build' für die bedingte Kompilierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!