Heim > Artikel > Backend-Entwicklung > Wie konvertiere ich in Golang ein int32 ohne Zwischenkonvertierungen in einen String?
Int32 in einen String in Golang ohne Zwischenkonvertierungen konvertieren
Das Konvertieren eines int32 in einen String in Golang ist eine häufige Aufgabe, die mit erledigt werden kann verschiedene Techniken. Während einige Ansätze Zwischenkonvertierungen in int oder int64 erfordern, ist es möglich, eine direkte Konvertierung ohne diese Schritte zu erreichen.
fmt.Sprint(i)
Die einfachste und einfachste Eine effiziente Methode ist die Verwendung von fmt.Sprint(i). Diese Funktion konvertiert jeden Interface{}-Typ in einen String, einschließlich int32. Es führt intern die erforderliche Formatierung durch, um den Wert als Zeichenfolge darzustellen.
Benutzerdefinierte Konvertierungsfunktion
Für leistungskritische Szenarien kann eine benutzerdefinierte Konvertierungsfunktion die schnellste Lösung bieten . Der folgende Codeausschnitt implementiert eine Funktion, die int32 ohne Zwischenkonvertierungen in einen String konvertiert:
<code class="go">func String(n int32) string { buf := [11]byte{} pos := len(buf) i := int64(n) signed := i < 0 if signed { i = -i } for { pos-- buf[pos], i = '0'+byte(i%10), i/10 if i == 0 { if signed { pos-- buf[pos] = '-' } return string(buf[pos:]) } } }</code>
Benchmarking verschiedener Ansätze
Hier ist ein Benchmark-Vergleich der verschiedenen Methoden:
<code class="go">package main import ( "fmt" " strconv" " time" ) func main() { var s string i := int32(-2147483648) t := time.Now() for j := 0; j < 50000000; j++ { s = String(i) //5.5923198s //s = String2(i) //5.5923199s //s = strconv.FormatInt(int64(i), 10) // 5.9133382s //s = strconv.Itoa(int(i)) //5.9763418s //s = fmt.Sprint(i) // 13.5697761s } fmt.Println(time.Since(t)) fmt.Println(s) } func String(n int32) string { ... } ...</code>
Hier sind die Leistungsergebnisse:
Method | Time (seconds) |
---|---|
String(i) | 5.5923198 |
fmt.Sprint(i) | 13.5697761 |
strconv.Itoa(int(i)) | 5.9763418 |
strconv.FormatInt(int64(i), 10) | 5.9133382 |
Wie aus den Benchmarks hervorgeht, bietet fmt.Sprint(i) die beste Leistung, gefolgt von der benutzerdefinierten Konvertierungsfunktion String(i) . Die anderen Methoden mit Zwischenkonvertierungen sind deutlich langsamer.
Fazit
Während die Konvertierung von int32 in String in Golang häufig Zwischenkonvertierungsschritte erfordert, ist es möglich, die Konvertierung direkt durchzuführen . fmt.Sprint(i) bietet den effizientesten und bequemsten Ansatz, während eine benutzerdefinierte Konvertierungsfunktion die schnellste Lösung für leistungsempfindliche Szenarien bieten kann.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich in Golang ein int32 ohne Zwischenkonvertierungen in einen String?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!