Sobes.tech
Junior

Hoe kun je werken met strings in de programmeertaal Go?

sobes.tech AI

Antwoord van AI

Strings in Go zijn onveranderlijke sequenties van bytes. Ze kunnen zowel UTF-8 tekst als willekeurige binaire gegevens vertegenwoordigen.

Belangrijkste manieren van werken:

  • Declaratie en initialisatie:

    var s1 string           // Lege string
    s2 := "hallo"            // Initialisatie met stringliteraal
    s3 := `meerdere regels
    string`             // Ruwe stringliteraal
    
  • Lengte van de string:

    len(s2) // Lengte in bytes. Voor "hallo" is dat 5.
    
  • Toegang tot bytes:

    b := s2[0] // Byte op index. Geeft 'h' (in UTF-8).
    

    Directe toegang tot bytes garandeert niet dat je een volledige UTF-8 teken krijgt.

  • Toegang tot runen (UTF-8 tekens): Strings kunnen worden geïtereerd op runen:

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

    Lengte in runen:

    utf8.RuneCountInString(s2) // Lengte in runen. Voor "hallo" is dat 5.
    
  • Samenvoegen van strings:

    str1 := "hello"
    str2 := " world"
    result := str1 + str2 // Samenvoegen met +
    

    Voor efficiënte samenvoeging van veel strings, gebruik strings.Builder.

    var sb strings.Builder
    sb.WriteString("hello")
    sb.WriteString(" ")
    sb.WriteString("world")
    result := sb.String() // Verkrijg de resulterende string
    
  • Conversie tussen strings en byte/rune slices:

    byteslice := []byte(s2)   // String naar byte slice
    rs := []rune(s2)          // String naar rune slice
    
    backToString := string(byteslice) // Byte slice naar string
    backToString = string(rs)         // Rune slice naar string
    
  • strings pakket: Biedt veel nuttige functies:

    • Contains, HasPrefix, HasSuffix
    • Index, LastIndex
    • Replace, ToUpper, ToLower, Trim, TrimSpace
    • Split, Join
  • strconv pakket: Voor het converteren van strings naar andere datatypes (getallen, booleans) en vice versa.

    i, err := strconv.Atoi("123") // String naar int
    s := strconv.Itoa(456)        // Int naar string
    
  • Onveranderlijkheid: Elke operatie die lijkt de string te wijzigen (bijvoorbeeld concatenatie), creëert in werkelijkheid een nieuwe string. Dit is belangrijk voor prestaties bij frequente wijzigingen. In dergelijke gevallen is het beter []byte of strings.Builder te gebruiken.