Sobes.tech
Junior

Kaip galite dirbti su eilutėmis Go kalboje?

sobes.tech AI

Atsakymas iš AI

Go kalboje eilutės yra nepakeičiamos baitų sekos.

Pagrindiniai būdai dirbti su eilutėmis:

  1. Kūrimas:

    // Eilutės literalas
    s1 := "Hello, Go!"
    
    // Iš baitų masyvo
    byteArray := []byte{'H', 'e', 'l', 'l', 'o'}
    s2 := string(byteArray)
    
  2. Sujungimas:

    s3 := "World"
    result := s1 + " " + s3 // Naudojant + operatorių
    

    Dėl didelio sujungimų kiekio efektyviau naudoti strings.Builder:

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

    • Baituose:
      byteLength := len(s1)
      
    • Simboliuose (rune):
      runeLength := utf8.RuneCountInString(s1) // Reikalauja importo "unicode/utf8"
      
  4. Prieiga prie simbolių (rune) ir iteracija: Go eilutės sudarytos iš baitų, bet naudojant range jie dekoduojami į rune (Unicode kodų taškus).

    import "fmt"
    
    for index, runeValue := range s1 {
        fmt.Printf("Indeksas: %d, Runa: %c, Tipas: %T\n", index, runeValue, runeValue)
    }
    

    Tiesioginis prieigos pagal indeksą būdas grąžina baitą, ne rune:

    b := s1[0] // Grąžina baitą 'H'
    
  5. Transformacija:

    • į baitų masyvą:
      byteSlice := []byte(s1)
      
    • į rune masyvą:
      runeSlice := []rune(s1)
      
  6. strings paketas: Pateikia daugybę naudingų funkcijų darbui su eilutėmis:

    • strings.Contains(s, substr): Patikrina, ar yra podalis.
    • strings.HasPrefix(s, prefix): Patikrina, ar eilutė prasideda nurodytu prefiksu.
    • strings.HasSuffix(s, suffix): Patikrina, ar eilutė baigiasi nurodytu sufiksu.
    • strings.Index(s, substr): Suranda pirmą pasikartojimą podalyje.
    • strings.ReplaceAll(s, old, new): Pakeičia visus pasikartojimus.
    • strings.Split(s, sep): Skiria eilutę pagal skyriklį.
    • strings.Join(a []string, sep string): Sujungia eilutės masyvą su skyrikliu.
    • strings.ToLower(s): Paverčia mažosiomis raidėmis.
    • strings.ToUpper(s): Paverčia didžiosiomis raidėmis.
    • strings.TrimSpace(s): Pašalina tarpus nuo pradžios ir pabaigos.
  7. fmt paketas: Formatuotam išvedimui ir nuskaitymui.

  8. strconv paketas: Konvertuoti eilutes į skaitinius tipus ir atvirkščiai:

    import "strconv"
    
    i, err := strconv.Atoi("123") // Eilutė į int
    s := strconv.Itoa(i)         // Int į eilutę
    

Nepakeičiamumas reiškia, kad bet kokia operacija, kuri atrodo kaip eilutės modifikacija (pvz., sujungimas ar Replace), iš tikrųjų sukuria naują eilutę.