„Ich habe mir eine Stunde den Kopf zerbrochen, und die Lösung hat drei Zeilen“: Wie man int in string in Go umwandelt
\n\nStellen Sie sich vor: Sie schreiben einen Microservice in Go, verarbeiten numerische Benutzer-IDs und stellen plötzlich fest, dass Sie diese mit Text in Logs oder HTTP-Antworten verknüpfen müssen. Sie schreiben so etwas wie str := "User_" + id – und der Compiler gibt einen Fehler aus: cannot use id (type int) as type string in concatenation. Kommt Ihnen bekannt vor?
Dies ist eine der häufigsten Fragen auf Stack Overflow zu Go – „How to convert an int value to string in Go?“ – sie wurde hunderttausende Male aufgerufen. Und das zu Recht: In Go gibt es eine strenge Typisierung, und man kann eine Zahl nicht einfach mit einem String „addieren“. Aber keine Sorge – heute besprechen wir alle Methoden zur Konvertierung von int in string in Go. Sie erfahren, welche Methode schneller ist, welche sicherer und wann Sie welche verwenden sollten. Los geht‘s!
Warum erlaubt Go nicht einfach int und string zu addieren?
\n\nIm Gegensatz zu JavaScript oder Python, wo "Age: " + 25 „out of the box“ funktioniert, erfordert Go eine explizite Typkonvertierung. Dies dient der Sicherheit: Sie müssen stets kontrollieren, was in was umgewandelt wird. Stellen Sie sich vor, Sie addieren versehentlich eine Zahl mit Text – in anderen Sprachen kann dies zu schwer auffindbaren Fehlern führen. In Go sagt der Compiler sofort: „Stopp, das ist nicht erlaubt“.
Daher gibt es in Go spezielle Funktionen aus der Standardbibliothek zur Konvertierung von int in string. Keine externen Abhängigkeiten – nur reines Go.
Methode Nr. 1: fmt.Sprintf – das universelle „Schweizer Taschenmesser“
\n\nDie intuitivste Methode ist die Verwendung der Funktion fmt.Sprintf. Sie kennen sie wahrscheinlich bereits von der formatierten Ausgabe. Sie kann alles in einen String umwandeln – Zahlen, boolesche Werte, Strukturen.
package main\n\nimport "fmt"\n\nfunc main() {\n age := 25\n str := fmt.Sprintf("Age: %d", age)\n fmt.Println(str) // Ausgabe: Age: 25\n}\n\nVorteile:
\n- \n
- Sehr flexibel: Sie können die Zahl direkt mit dem gewünschten Format in einen String einbetten (dezimal, hexadezimal, mit führenden Nullen). \n
- Geeignet für alle Typen – nicht nur int, sondern auch float, bool, struct. \n
Nachteile:
\n- \n
- Verwendet unter der Haube Reflektion, daher langsamer als spezialisierte Funktionen. \n
- Wenn Sie nur einen String aus einer Zahl erhalten möchten (ohne Formatierung), ist dies überdimensioniert. \n
Wann verwenden: Wenn Sie die Ausgabe nicht nur konvertieren, sondern auch formatieren möchten – Währungssymbole hinzufügen, an der Breite ausrichten, in HEX umwandeln.
\n\nMethode Nr. 2: strconv.Itoa – schnell und einfach (int → string)
\n\nWenn Ihre Aufgabe lediglich darin besteht, die String-Darstellung einer Zahl zu erhalten, ohne jegliche „Verschönerungen“, verwenden Sie strconv.Itoa. Dies ist eine spezialisierte Funktion zur Konvertierung von int in string. Sie arbeitet schnell und führt keine überflüssigen Operationen durch.
package main\n\nimport (\n "fmt"\n "strconv"\n)\n\nfunc main() {\n number := 42\n str := strconv.Itoa(number)\n fmt.Println(str) // Ausgabe: "42"\n fmt.Printf("Typ: %T\\n", str) // Typ: string\n}\n\nVorteile:
\n- \n
- Maximale Leistung für den Basisfall. \n
- Einfachheit: Eine Funktion – eine Aktion. \n
Nachteile:
\n- \n
- Funktioniert nur mit dem Typ
int. Wenn Sieint64,int32usw. haben, müssen Sie zuerst inintumwandeln oder eine andere Methode verwenden. \n - Keine Kontrolle über das Zahlensystem – nur dezimale Darstellung. \n
Wann verwenden: Wenn Sie einen normalen int haben und einfach einen String erhalten möchten – das ist Ihre Standardwahl.
Methode Nr. 3: strconv.FormatInt – Kontrolle über das Zahlensystem
\n\nWas aber, wenn Sie eine Zahl in