Sobes.tech
Junior

Kuidas saate Go keeles stringidega töötada?

sobes.tech AI

Vastus AI-lt

Go keeles stringid on muutumatud baitide jadas.

Peamised viisid stringidega töötamiseks:

  1. Loomine:

    // Stringi literaal
    s1 := "Hello, Go!"
    
    // Baitide massiivist
    byteArray := []byte{'H', 'e', 'l', 'l', 'o'}
    s2 := string(byteArray)
    
  2. Kokku panemine:

    s3 := "World"
    result := s1 + " " + s3 // Kasutades + operaatorit
    

    Suurema kokkuliitmise puhul on tõhusam kasutada strings.Builder:

    import "strings"
    
    var sb strings.Builder
    sb.WriteString("Hello")
    sb.WriteString(", ")
    sb.WriteString("World!")
    result2 := sb.String()
    
  3. Pikkus:

    • baitides:
      byteLength := len(s1)
      
    • märkides (runes):
      runeLength := utf8.RuneCountInString(s1) // nõuab importi "unicode/utf8"
      
  4. Juurdepääs märkidele (runes) ja iteratsioon: Go stringid koosnevad baitidest, kuid range abil dekodeeritakse need rune-ideks (Unicode koodipunktideks).

    import "fmt"
    
    for index, runeValue := range s1 {
        fmt.Printf("Indeks: %d, Ruun: %c, Tüüp: %T\n", index, runeValue, runeValue)
    }
    

    Otse juurdepääs indeksiga tagastab baitide väärtuse, mitte rune:

    b := s1[0] // Tagastab bait 'H'
    
  5. Transformatsioon:

    • Baitide massiiviks:
      byteSlice := []byte(s1)
      
    • Rune-massiiviks:
      runeSlice := []rune(s1)
      
  6. strings paket: Pakub palju kasulikke funktsioone stringidega töötamiseks:

    • strings.Contains(s, substr): Kontrollib, kas alamstring on olemas.
    • strings.HasPrefix(s, prefix): Kontrollib, kas string algab määratud prefiksiga.
    • strings.HasSuffix(s, suffix): Kontrollib, kas string lõpeb määratud sufiksiga.
    • strings.Index(s, substr): Otsib esimese esinemise alamstringis.
    • strings.ReplaceAll(s, old, new): Asendab kõik esinemised.
    • strings.Split(s, sep): Jagab stringi separatoriga.
    • strings.Join(a []string, sep string): Ühendab stringide massiivi separatoriga.
    • strings.ToLower(s): Muudab väikesteks tähtedeks.
    • strings.ToUpper(s): Muudab suureks tähtedeks.
    • strings.TrimSpace(s): Eemaldab tühikud algusest ja lõpust.
  7. fmt paket: Formaatkirjutise ja lugemise jaoks.

  8. strconv paket: Stringide konverteerimine arvutüüpideks ja vastupidi:

    import "strconv"
    
    i, err := strconv.Atoi("123") // String arvuks
    s := strconv.Itoa(i)         // Arv stringiks
    

Stringide muutmatus on oluline ning tähendab, et iga operatsioon, mis näib stringi muutmisena (näiteks ühendamine või Replace), tegelikult loob uue stringi.