Das Formatieren Ihres Codes ist eine wichtige Möglichkeit, seine Lesbarkeit, Konsistenz und Wiederverwendbarkeit zu verbessern. Korrekt formatierter Code ist einfacher zu verstehen, zu ändern und zu warten.
Eine der großartigen Funktionen von Go sind die klar definierten Formatierungskonventionen. Sie können das integrierte Formatpaket und den Befehl go fmt verwenden, um Ihren Code automatisch zu formatieren. Dies trägt dazu bei, dass andere Go-Programmierer es so einfach wie möglich lesen können.
Das Formatpaket und der fmt-Befehl
Der Format Paket implementiert die Standardformatierung für die Gehen Sie zum Quellcode. Das Paket interoperiert mit der Format gehen Befehlszeilentool für Flexibilität bei der Formatierung von Go-Code.
Das Paket format ist ein Untermodul des Pakets go. So können Sie es importieren:
importieren"gehen/formatieren"
Sie können die Dokumentation des Befehls go fmt durchsuchen, indem Sie die Hilfe Befehl vor dem fmt Befehl:
geh fmt helfen
Geben Sie nach dem fmt-Befehl einen Dateinamen an, um diese Datei zu formatieren. Dadurch werden die Leerzeichen und Einzüge Ihres Codes an die Go-Standards angepasst.
gehen fmt main.go
Hinter den Kulissen ist go fmt ein Alias für den Befehl gofmt, insbesondere:
gofmt -l -w
Diese Flags bewirken, dass gofmt alle Änderungen in jede von Ihnen bereitgestellte Datei schreibt und die Namen der geänderten Dateien auflistet.
Sie können die hinzufügen -X Flag für den fmt-Befehl. Das Flag -x hilft dabei, Änderungen vom Formatierer in die Originaldatei zu schreiben.
gehe fmt -x main.go
Der -N flag funktioniert ähnlich wie -x, nimmt aber keine Änderungen vor. Stattdessen werden die Befehle angezeigt, die go fmt ohne das -n ausführen würde:
gehe fmt -n main.go
Das Flag weist den Formatierer an, Änderungen anzuzeigen, sodass Sie diese zuerst überprüfen können, bevor Sie sie anwenden.
Hier ist ein einfaches Go-Programm, das Ganzzahlen von null bis fünf durchläuft und die Zeichenfolge „Hello World!“ ausgibt.
// Formatieren einer Datei namens main.go wie im obigen Beispiel gezeigt
Paket hauptsächlich
importieren"fmt"
Funkhauptsächlich() {
Var X int=5
für ich:=0;ich fmt. Println("Hallo Welt!")
}
}
Go-Quellcode formatieren
Das Formatpaket enthält a Quelle Funktion zum Formatieren von Go-Dateien aus Programmen. Sie müssen die Datei lesen und den Inhalt als Argumente an die Source-Funktion übergeben.
Die Source-Funktion gibt den formatierten Dateiinhalt zurück, den Sie in die Datei oder in eine neue schreiben können.
Sie können Dateien mit lesen ReadFile Funktion der ioutil Paket. Die ReadFile-Funktion übernimmt den Dateinamen und gibt den Dateiinhalt und einen Fehler zur Behandlung zurück.
fileContent, err := ioutil. ReadFile("main.go")
Wenn äh != Null {
Protokoll. Fatalln("Fehler beim Lesen der Datei", irren)
}
Das Übergeben des Dateiinhalts an die Source-Funktion gibt den formatierten Dateiinhalt und einen Verarbeitungsfehler zurück.
formatiert, err := formatieren. Quelle (Dateiinhalt)
Wenn äh != Null {
Protokoll. Fatalln("Bei der Quellfunktion ist ein Formatierungsfehler aufgetreten", irren)
}
Sie können den formatierten Dateiinhalt mit in die Datei schreiben WriteFile Funktion der ioutil Paket. Die WriteFile-Funktion übernimmt den Dateinamen, Inhalt und Dateiberechtigungsmodus, wobei alle Fehler zurückgegeben werden. Der Berechtigungsmodus ist nur relevant, wenn die Datei nicht existiert, in diesem Fall wird WriteFile sie erstellen.
Der 0644 Dateiberechtigungsmodus gibt:
- Der Dateieigentümer hat Lese- und Schreibberechtigungen.
- Leseberechtigungen für andere Benutzer in derselben Gruppe wie der Eigentümer.
- Keine Berechtigungen für andere Benutzer.
Fehler = ioutil. WriteFile("main.go", formatiert, 0644)
Wenn äh != Null {
Protokoll. Fatalln("Beim Schreiben der Datei ist ein Fehler aufgetreten", irren)
}
Alternativ können Sie den Go-Quellcode zur Formatierung an die Source-Funktion übergeben. Sie können den Code in einem Byte-Slice mit Ticks (`):
Paket hauptsächlich
importieren (
"fmt"
"gehen/formatieren"
)Funkhauptsächlich() {
// einfaches Programm, das die Fläche eines Dreiecks mit der math
// Funktion
formatiert, err := formatieren. Quelle([]Byte(`
Paket hauptsächlich
importieren(
"fmt"
"Mathematik"
)
Funkhauptsächlich(){
Var A float64=3
Var B float64=4
Var C float64=5
Var S float64=(a+b+c)/2
Var Bereich float64=math. Quadrat (s*(s-a)*(s-b)*(s-c))
fmt. Println("Die Fläche des Dreiecks ist: ",Bereich)
}
`))
Wenn äh != Null {
Protokoll. Fatalln("Bei der Quellfunktion ist ein Formatierungsfehler aufgetreten", irren)
} anders {
fmt. Println(Schnur(formatiert))
}
}
Beim Formatieren müssen Sie den Byte-Slice mit dem in einen String konvertieren Schnur Funktion. Hier ist der formatierte Quellcode.
Anpassen des Formatierungsprozesses
Sie können den Formatierungsprozess mit den Formatpaketen anpassen Konfig Struktur. Die Config-Struktur enthält Felder, in denen Sie Formatoptionen bei der Instanziierung angeben können.
importieren"gehen/formatieren"
config := & formatieren. Konfig{
// Tabwidth setzt die Anzahl der Leerzeichen pro Tabulator.
Tabbreite: 8,// UseTabs gibt an, ob der Formatierer statt Tabulatoren verwenden soll
// Leerzeichen.
Registerkarten verwenden: FALSCH,// TabIndent wird verwendet, um zu bestimmen, ob die anfängliche Einrückung sein soll
// erfolgt mit Tabulatoren oder Leerzeichen.
TabEinzug: WAHR,// NoFinalTab gibt an, ob ein abschließender Tab entfernt werden soll
// Zeilen bevor sie formatiert werden.
Kein FinalTab: WAHR,// Leerzeichen gibt an, ob Leerzeichen für die Ausrichtung verwendet werden sollen.
Leerzeichen: WAHR,
// NoTrimTrailingSpace gibt an, ob nachgestellte Leerzeichen verwendet werden sollen
// von Zeilen abgeschnitten werden, bevor sie formatiert werden.
NoTrimTrailingSpace: FALSCH,
}
Sie können die Felder verwenden, um das Verhalten Ihres Formatierers anzupassen, indem Sie die Optionen basierend auf Ihren Anforderungen festlegen.
Sie können dann die Source-Methode dieser Struktur verwenden, um einen Byte-Slice basierend auf Ihrer Konfiguration zu formatieren.
Funkhauptsächlich() {
fileContent, err := ioutil. ReadFile("main.go")// Beachten Sie, dass dies eine Source-Methode vom Typ `config` ist, nicht von der
// Paket selbst `formatieren` Obwohl die Funktionalität dieselbe ist, werden Sie
// muss sich daran halten, wenn Sie den Formatierer konfigurieren müssen
formatiert, err := config. Quelle (Dateiinhalt)Wenn äh != Null {
Protokoll. Fatalln("Es gab einen Formatierungsfehler mit dem Konfigurationstyp", irren)
}
ioutil. WriteFile("main.go", formatiert, 0644)
}
Aufruf der Konfig. Source()-Funktion wie diese formatiert den Inhalt der main.go Datei mit den Konfigurationsoptionen. Es gibt den formatierten Inhalt als Byte-Slice und einen Fehler zurück.
Sie können Strings in Go formatieren und manipulieren
Das Formatpaket und der Befehl go fmt können Ihnen dabei helfen, Ihren Codeformatierungsprozess zu automatisieren.
Go bietet auch ein fmt-Paket für die String-Formatierung und ein strings-Paket für die String-Manipulation.
Das fmt-Paket implementiert einfacher formatierte I/O mit Funktionen analog zu den printf- und scanf-Funktionen von C. Die Strings-Funktion implementiert einfache Funktionen zum Bearbeiten von UTF-8-codierten Strings.