Beim Schreiben von Go-Code werden Sie die Zeichenfolgenformatierung in vielen Situationen sehr nützlich finden. Möglicherweise analysieren Sie Eingaben oder erstellen eine komplexere Ausgabe als eine einfache Verkettung. Möglicherweise arbeiten Sie mit anderen Typen als einfachen Zeichenfolgen.

Die Zeichenfolgenformatierung in Go verwendet den vertrauten Prozess und die Syntax der printf-Funktion, die auch Sprachen von Java bis Haskell verwenden.

Go bietet verschiedene Methoden zum Formatieren von Zeichenfolgen in der fmt Paket. Sie können Funktionen und Verben für die Formatierung von Zeichenfolgen verwenden, abhängig von der Operation oder den Eingaben, die Sie formatieren möchten.

Zeichenfolgenformatierung in Go

Die Funktionen im fmt-Paket ähneln denen von like die printf-Funktion in der Bash oder C. Go leitet seine Formatierungsverben von C ab.

Sie nutzen Verben zur Zeichenfolgenformatierung als Platzhalter für Ihre Variablenwerte in einer enthaltenden Zeichenfolge. Sie können diese Formatierungszeichenfolge dann an eine Funktion wie übergeben

instagram viewer
Druckf, zusammen mit Werten, die diesen Platzhaltern entsprechen.

Sie können keine Zeichenfolgenformatierungsverben mit verwenden Drucken und Druckln Methoden. Sie können sie mit Methoden wie verwenden Druckf und Sprintf.

fmt. Println("Dies ist ein Test %v", 90)
fmt. Printf("Dies ist ein Test %v", 90)

Das %v Verb gibt jeden Wert in seinem Standardformat aus. Das Druckln -Methode erkennt keine Verben und gibt die empfangenen Argumente aus. Das Druckf und Sprintf Funktionen formatieren beide das erste String-Argument, das Sie ihnen übergeben.

String-Formatierungsfunktionen im fmt-Paket

Zeichenfolgen formatieren in die Programmiersprache Go erfordert, dass Sie eine Zeichenfolgenformatierungsfunktion und ein Verb verwenden. Die Funktion gibt die formatierte Zeichenfolge zurück, und die Verben sind die Platzhalter für die Eingaben in die Zeichenfolge.

Das Druckf Die Methode formatiert die Eingabe gemäß dem Formatbezeichner und gibt die Anzahl der geschriebenen Bytes oder Fehler zurück.

fmt. Printf("Dies ist ein Test %v", 90)

Herkömmlicherweise müssen Sie sich bei der Verwendung von keine Gedanken über Fehler machen Druckf Methode.

Das Sprintf Die Methode formatiert gemäß dem angegebenen Format und gibt das Ergebnis als Zeichenfolge zurück.

Var Ergebnis = fmt. Sprintf("Dies ist ein Test %v", 90)

Das Fprintf -Methode formatiert die Zeichenfolge und schreibt sie in einen Writer (Methoden, die die io. Schriftsteller Schnittstelle)

// Daten auf die Standardausgabe schreiben
Ergebnis, err = fmt. Fprintf (Writer, "Dies ist ein Test %v", 90)

Das Fscanf Methode scannt von einem Lesegerät und formatiert gemäß dem angegebenen Format.

Var nehmen Schnur

// Daten aus der angegebenen Zeichenfolge lesen
readString := Zeichenfolgen. NewReader ("Dies ist ein Test")

lesen, err := fmt. Fscanf (Leser, "%v", &take)

In diesem Fall ist die Fscanf dekodiert die Zeichenkette vom Lesegerät in die nehmen Variable, und die lesen Die Variable enthält das Ergebnis des Formats.

Die Verben zur Zeichenfolgenformatierung

Go bietet viele Formatierungsverben, die Sie zusammen mit den Zeichenfolgenformatierungsfunktionen verwenden können.

Es gibt allgemeine Zeichenfolgenformatierungsverben wie die %v Verb in den Beispielen für Zeichenfolgenformatierungsfunktionen. Sie können die allgemeinen Zeichenkettenformatierungsverben verwenden, um jeden Datentyp zu formatieren.

Du kannst den... benutzen %#v Verb, um einen beliebigen Wert auszugeben, das %+v für Strukturen, die %T Verb für den Typ eines beliebigen Werts und die %% Verb für keine Werte.

Typ irgendein Struktur { 
Name Schnur
das Alter int
ist eingeloggt bool
}

Var Instanz = beliebig {
Name: "John Doe",
das Alter: 34,
ist eingeloggt: Stimmt,
}

Var Ergebnis = fmt. Sprintf("Das ist ein Struktur Formatierungsbeispiel %+v", Instanz)
fmt. Println (Ergebnis)

Das Ergebnis Variable enthält die formatierte Zeichenfolge der instanziierten Struktur. Wenn Sie es ausdrucken, sollte es in etwa so aussehen:

Dies ist ein Beispiel für die Formatierung einer Struktur {name: John Doe age: 34 isLoggedIn:Stimmt}

Es gibt die Verben zum Formatieren bestimmter nativer Go-Datentypen, einschließlich Kanälen und Zeigern.

Verb Funktionalität
%t boolesche Werte.
%d int, int8 usw.
%d, %#x falls mit %#v gedruckt uint, uint8 usw.
%g float32, complex64 usw.
%s Schnur.
%p Chan.
%P Zeiger.

Sie sollten sicherstellen, dass Sie bei den Verben keine Fehler machen, da bei ihnen zwischen Groß- und Kleinschreibung unterschieden wird, wie z Chan und Zeiger Verben.

Ganzzahlen und Gleitkommazahlen formatieren

Es gibt Zeichenfolgenformatierungsverben zum Formatieren von Ganzzahlen verschiedene Basen. Sie können jedes dieser Verben verwenden, um ganze Zahlen zu formatieren

Verb Funktionalität
%b Basis 2
%c das Zeichen, das durch den entsprechenden Unicode-Codepunkt dargestellt wird.
%d Basis 10.
Basis 8.
Basis 8 mit 0o-Präfix.
%q ein Zeichenliteral mit einfachen Anführungszeichen, das mit der Go-Syntax sicher maskiert wurde.
%x Basis 16, mit Kleinbuchstaben für a-f.
%X Basis 16, mit Großbuchstaben für A-F.
%U Unicode-Format: U+1234; dasselbe wie "U+%04X".

Beispielsweise können Sie eine Ganzzahl mit formatieren %d Verb:

Var Ergebnis = fmt. Sprintf("Dies ist ein Integer-Formatierungsbeispiel %d", 90)
fmt. Println (Ergebnis)

Dies sind die Verben zum Formatieren von Fließkommazahlen.

Verb Funktionalität
%b dezimallose wissenschaftliche Notation mit Exponent einer Potenz von zwei, in der Art von strconv. FormatFloat mit dem 'b'-Format, z. -123456p-78
%e wissenschaftliche Notation, z.B. -1.234456e+78
%E Dezimalpunkt, aber kein Exponent, z. B. 123.456
%f Dezimalpunkt, aber kein Exponent, z. B. 123.456
%F Synonym für %f.
%g %e für große Exponenten, %f sonst. Präzision unten.
%G %E für große Exponenten, sonst %F
%x Hexadezimalschreibweise (mit Dezimalpotenzen von zwei Exponenten), z. B. -0x1,23abcp+20.
%X Hexadezimalschreibweise in Großbuchstaben, z. -0X1.23ABCP+20.

Hier ist ein Beispiel für die Formatierung eines Dezimalpunkts ohne Exponent mit dem %f Verb.

Var Ergebnis = fmt. Sprintf("Dies ist ein Fließkomma-Formatierungsbeispiel %f", 432.9503)
fmt. Println (Ergebnis)

Sie können immer die allgemeinen Verben verwenden, wenn Sie sich über den Typ nicht sicher sind.

Strings und Bytes formatieren

Strings und Slice-of-Byte-Typen sind in Go ziemlich ähnlich. Dies sind die Flags zum Formatieren von Strings und Bytes.

Verb Funktionalität
%s die nicht interpretierten Bytes des Strings oder Slice
%q eine Zeichenfolge in doppelten Anführungszeichen, die mit der Go-Syntax sicher maskiert wurde
%x Basis 16, Kleinbuchstaben, zwei Zeichen pro Byte
%X Basis 16, Großbuchstaben, zwei Zeichen pro Byte

Hier ist ein Beispiel für die Formatierung einer Zeichenfolge mit dem %s Verb.

Var score = "Beispiel"
Var Ergebnis = fmt. Sprintf("Das ist ein Schnur Formatierungsbeispiel %s", Partitur)
fmt. Println (Ergebnis)

Das fmt-Paket ist für die Python-Programmierung unerlässlich

Das fmt Paket enthält die meisten Funktionen, die Sie für die Formatierung von Zeichenfolgen benötigen. Go bietet auch eine Saiten Paket für String-Manipulation und a Protokoll Paket, das Zeichenfolgen für die Protokollierung formatieren kann.

Das fmt Paket hat Funktionen, die die implementieren io. Schriftsteller und io. Leser Schnittstellen. Sie werden es für viele Anwendungsfälle wie das Erstellen von Web- und Befehlszeilenanwendungen nützlich finden.