Kursinhalt
Einführung in Golang
Einführung in Golang
Zeichenfolgenformatierung
Jetzt, da wir alle grundlegenden Datentypen kennengelernt haben, können wir String-Formatierung erkunden. In der Programmierung beinhaltet die String-Formatierung das Einfügen von Variablenwerten in Zeichenfolgen.
Hinweis
Die
import
-Anweisung wird verwendet, um Pakete in eine Go-Anwendung zu importieren. Ein Paket ist eine Sammlung verwandter Go-Quelldateien, die zusammenarbeiten, um eine Reihe von Funktionalitäten oder Diensten anzubieten. Dasfmt
-Paket bietet Funktionen, die es uns ermöglichen, Zeichenfolgen zu formatieren.
Eine der Funktionen aus dem fmt
-Paket, die wir verwendet haben, ist die Println
-Funktion. Die Println
-Funktion zeigt Ausgabetext jedes Mal in einer neuen Zeile an. Es gibt jedoch eine Funktion namens Print
, die die Ausgabe anzeigt, ohne zu einer neuen Zeile zu wechseln:
index
package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
Im Allgemeinen können wir diese Funktionen verwenden, um Variablenwerte innerhalb von String-Daten mit der folgenden Methode einzufügen:
index
package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Println("There are", n, "cats,", in, "of them are inside the house while", out, "are outside.") }
Diese Methode ist jedoch nicht sehr effizient, da wir den String in viele Segmente aufteilen müssen, um Variablen an relevanten Stellen einzufügen, was in komplexeren Fällen umständlich werden kann. Die Printf
-Funktion löst dieses Problem und vereinfacht den Prozess der Anzeige von formatiertem Output.
Die Printf
-Funktion nimmt einen Format-String als erstes Argument, gefolgt von Werten (oder Variablen), die in den Format-String eingefügt werden sollen. Ein Format-String enthält Platzhalter (Format-Spezifizierer), die das gewünschte Ausgabeformat definieren.
Folgendes ist ein Beispiel:
index
package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Printf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) }
Wie im Beispiel gezeigt, sind Formatbezeichner Symbole, die als Platzhalter für bestimmte Datentypen innerhalb eines Strings dienen. Es gibt einen eindeutigen Formatbezeichner für jeden Datentyp. Die folgende Tabelle bietet eine Liste grundlegender Formatbezeichner:
Formatbezeichner | Datentyp |
---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (oder Rune) |
Die Variablen ersetzen die jeweiligen Platzhalter im Formatstring. Im Ausgabeergebnis des obigen Beispiels wird das erste %d
durch den Wert von n
ersetzt. Ebenso wird das zweite durch die entsprechende Variable ersetzt, die in
ist, und das letzte %d
wird durch den Wert von out
ersetzt.
Wir können auch einen String formatieren und ihn in einer String-Variablen speichern, indem wir die Funktion Sprintf
verwenden, die einen String formatiert und den resultierenden String zur Speicherung oder anderweitigen Verwendung zurückgibt, anstatt ihn sofort auf dem Bildschirm anzuzeigen:
index
package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in var text string = fmt.Sprintf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) fmt.Println("Text:", text) }
Hier ist ein komplexeres Beispiel, das mehrere Konzepte, die wir zuvor behandelt haben, in einem einzigen Programm integriert. Es wird eine wertvolle Übung sein, das folgende Programm und seine Ausgabe zu überprüfen, um Ihre Code-Lesefähigkeiten zu verbessern:
index
package main import "fmt" func main() { var numA float32 = 17.7 var numB int = 10 var str string = fmt.Sprintf("It is %t that 'a' is bigger than 'b'.", numA > float32(numB)) fmt.Printf("The numbers 'a' and 'b' are %f and %d. %s", numA, numB, str) }
In einigen Fällen führt der Compiler eine implizite Typumwandlung durch, um Werte mit Formatbezeichnern abzugleichen, wie im folgenden Beispiel gezeigt:
index
package main import "fmt" func main() { var char rune = 'A' fmt.Printf("The Unicode decimal value of %c is %d", char, char) }
Der Rune 'char' wird sowohl als Zeichen als auch als numerischer Wert ausgegeben. In einigen Fällen kann der Compiler jedoch einen Fehler erzeugen. Zum Beispiel führt der folgende Code zu einer ungültigen Ausgabe, da ein 'float' nicht implizit in einen 'int' umgewandelt werden kann:
index
var value float32 = 5.7 fmt.Printf("%d", value)
Danke für Ihr Feedback!