Sobes.tech
Junior

Wie kann man mit Strings in der Programmiersprache Go arbeiten?

sobes.tech KI

Antwort von AI

Zeichenketten in Go sind unveränderliche Sequenzen von Bytes. Sie können sowohl UTF-8-Text als auch beliebige binäre Daten darstellen.

Hauptmethoden:

  • Deklaration und Initialisierung:

    var s1 string           // Leere Zeichenkette
    s2 := "hallo"           // Initialisierung mit Literal
    s3 := `mehrzeilig
    zeichenkette`             // Raw-String-Literal
    
  • Länge der Zeichenkette:

    len(s2) // Länge in Bytes. Für "hallo" ist es 5.
    
  • Zugriff auf Bytes:

    b := s2[0] // Byte an Index. Gibt 'h' zurück (in UTF-8).
    

    Direkter Zugriff auf Bytes garantiert nicht, dass ein vollständiges UTF-8-Zeichen erhalten wird.

  • Zugriff auf Runen (UTF-8-Zeichen): Zeichenketten können über Runen iteriert werden:

    for index, runeValue := range s2 {
        fmt.Printf("Index: %d, Rune: %c\n", index, runeValue)
    }
    

    Länge in Runen:

    utf8.RuneCountInString(s2) // Länge in Runen. Für "hallo" ist es 5.
    
  • Zeichenkettenverkettung:

    str1 := "hello"
    str2 := " world"
    result := str1 + str2 // Verkettung mit +
    

    Für effiziente Verkettung vieler Zeichenketten verwenden Sie strings.Builder.

    var sb strings.Builder
    sb.WriteString("hello")
    sb.WriteString(" ")
    sb.WriteString("world")
    result := sb.String() // Ergebniszeichenkette
    
  • Umwandlung zwischen Zeichenketten und Byte-/Rune-Slices:

    byteslice := []byte(s2)   // Zeichenkette zu Byte-Slice
    rs := []rune(s2)          // Zeichenkette zu Rune-Slice
    
    backToString := string(byteslice) // Byte-Slice zu Zeichenkette
    backToString = string(rs)         // Rune-Slice zu Zeichenkette
    
  • Paket strings: Bietet viele nützliche Funktionen:

    • Contains, HasPrefix, HasSuffix
    • Index, LastIndex
    • Replace, ToUpper, ToLower, Trim, TrimSpace
    • Split, Join
  • Paket strconv: Für die Umwandlung von Zeichenketten in andere Datentypen (Zahlen, boolesche Werte) und umgekehrt.

    i, err := strconv.Atoi("123") // Zeichenkette zu int
    s := strconv.Itoa(456)        // int zu Zeichenkette
    
  • Unveränderlichkeit: Jegliche Operationen, die eine Zeichenkette zu verändern scheinen (z.B. Verkettung), erstellen tatsächlich eine neue Zeichenkette. Dies ist wichtig für die Leistung bei häufigen Änderungen. In solchen Fällen ist es besser, []byte oder strings.Builder zu verwenden.