Zeichenfolgen in Go sind unveränderlich, was bedeutet, dass Sie ihren Inhalt nach der Erstellung nicht mehr ändern können. Dies geht aus dem folgenden Fehler hervor: „kann nicht an new_str[i] zugewiesen werden“.
Um den Inhalt eines Strings zu ändern, müssen Sie ihn zunächst in ein []Byte-Slice umwandeln. Im Gegensatz zu Strings sind Byte-Slices tatsächlich veränderbar. Anschließend können Sie die gewünschten Änderungen am Byte-Slice vornehmen und es mit der Funktion string(...) wieder in einen String umwandeln.
Hier ist eine modifizierte Version Ihres Codes, die Byte-Slices verwendet, um Kleinbuchstaben in zu ändern Großbuchstaben:
<code class="go">func ToUpper(str string) string { bytes := []byte(str) for i := 0; i < len(str); i++ { if bytes[i] >= 'a' && bytes[i] <= 'z' { chr := uint8(rune(bytes[i]) - 'a' + 'A') bytes[i] = chr } } return string(bytes) }</code>
Wenn Sie jetzt ToUpper("cdsrgGDH7865fxgh") aufrufen, werden alle Kleinbuchstaben korrekt in Großbuchstaben umgewandelt.
Das obige ist der detaillierte Inhalt von## Warum kann ich eine Zeichenfolge an Ort und Stelle in Go nicht ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!