Wie ändere ich Strings in Go, obwohl ich weiß, dass sie unveränderlich sind?

DDD
Freigeben: 2024-10-26 04:33:02
Original
462 Leute haben es durchsucht

How Do I Modify Strings in Go, Knowing They Are Immutable?

Ändern von Zeichenfolgen in Go: Eine praktische Lösung

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!