Heim  >  Artikel  >  Backend-Entwicklung  >  Wie ändere ich Strings in Go, obwohl ich weiß, dass sie unveränderlich sind?

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

DDD
DDDOriginal
2024-10-26 04:33:02461Durchsuche

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>

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!

Stellungnahme:
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