In Go sind Zeichenfolgen unveränderlich, was bedeutet, dass ihr Inhalt nach der Erstellung nicht geändert werden kann. Dies kann frustrierend sein, wenn Sie versuchen, eine vorhandene Zeichenfolge zu ändern, aber es gibt eine einfache Lösung mit dem fmt-Paket.
Bedenken Sie den folgenden Code:
<code class="go">package main import "fmt" func ToUpper(str string) string { new_str := str for i := 0; i < len(str); i++ { if str[i] >= 'a' && str[i] <= 'z' { chr := uint8(rune(str[i]) - 'a' + 'A') new_str[i] = chr } } return new_str } func main() { fmt.Println(ToUpper("cdsrgGDH7865fxgh")) }</code>
Dieser Code versucht, Großbuchstaben in Kleinbuchstaben umzuwandeln in einer Zeichenfolge, aber Sie werden auf einen Fehler stoßen: „Zuweisung zu new_str[i] nicht möglich“. Dies liegt daran, dass Zeichenfolgen unveränderlich sind.
Um dies zu umgehen, können wir die Zeichenfolge in einen Byte-Slice konvertieren und diesen stattdessen ändern:
<code class="go">func ToUpper(str string) string { new_str := []byte(str) for i := 0; i < len(str); i++ { if str[i] >= 'a' && str[i] <= 'z' { chr := uint8(rune(str[i]) - 'a' + 'A') new_str[i] = chr } } return string(new_str) }</code>
Hier wird []byte(str) erstellt ein Byte-Slice aus der Zeichenfolge, und string(new_str) wandelt das geänderte Byte-Slice zurück in eine Zeichenfolge um.
Mit dieser Änderung können Sie jetzt Zeichenfolgen ändern und Kleinbuchstaben in Großbuchstaben umwandeln:
fmt.Println(ToUpper("cdsrgGDH7865fxgh")) // Output: CDSRGgdh7865FXGH
Das obige ist der detaillierte Inhalt vonWie ändere ich Strings in Go, obwohl ich weiß, dass sie unveränderlich sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!