Sobes.tech
Junior

Ako môžete pracovať s reťazcami v jazyku Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go sú reťazce nemenné sekvencie bajtov.

Hlavné spôsoby práce s reťazcami:

  1. Vytváranie:

    // Literál reťazca
    s1 := "Hello, Go!"
    
    // Z poľa bajtov
    byteArray := []byte{'H', 'e', 'l', 'l', 'o'}
    s2 := string(byteArray)
    
  2. Konkatenácia:

    s3 := "World"
    result := s1 + " " + s3 // Použitie operátora +
    

    Pre veľké množstvo konkatenácií je efektívnejšie použiť strings.Builder:

    import "strings"
    
    var sb strings.Builder
    sb.WriteString("Hello")
    sb.WriteString(", ")
    sb.WriteString("World!")
    result2 := sb.String()
    
  3. Dĺžka:

    • V bajtoch:
      byteLength := len(s1)
      
    • V znakoch (rune):
      runeLength := utf8.RuneCountInString(s1) // Vyžaduje import "unicode/utf8"
      
  4. Prístup ku znakom (rune) a iterácia: V jazyku Go sú reťazce zložené z bajtov, ale pri iterácii pomocou range sú dekódované do rune (kódových bodov Unicode).

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

    Priamy prístup podľa indexu vracia bajt, nie rune:

    b := s1[0] // Vráti bajt 'H'
    
  5. Prevod:

    • Na pole bajtov:
      byteSlice := []byte(s1)
      
    • Na pole rune:
      runeSlice := []rune(s1)
      
  6. Balík strings: Poskytuje množstvo užitočných funkcií pre prácu s reťazcami:

    • strings.Contains(s, substr): Kontroluje prítomnosť podreťazca.
    • strings.HasPrefix(s, prefix): Kontroluje, či reťazec začína určitým prefixom.
    • strings.HasSuffix(s, suffix): Kontroluje, či reťazec končí určitým sufixom.
    • strings.Index(s, substr): Vyhľadá prvé výskyt podreťazca.
    • strings.ReplaceAll(s, old, new): Nahradí všetky výskyty podreťazca.
    • strings.Split(s, sep): Rozdelí reťazec podľa oddeľovača.
    • strings.Join(a []string, sep string): Spojí pole reťazcov s oddeľovačom.
    • strings.ToLower(s): Prevedie na malé písmená.
    • strings.ToUpper(s): Prevedie na veľké písmená.
    • strings.TrimSpace(s): Odstráni biele znaky z začiatku a konca.
  7. Balík fmt: Pre formátovaný výstup a načítanie reťazcov.

  8. Balík strconv: Pre prevod reťazcov na číselné typy a naopak.

    import "strconv"
    
    i, err := strconv.Atoi("123") // Reťazec na int
    s := strconv.Itoa(i)         // Int na reťazec
    

Nemennosť reťazcov je dôležitá a znamená, že akcia, ktorá sa zdá byť modifikáciou reťazca (napríklad konkatenácia alebo Replace), v skutočnosti vytvára nový reťazec.