Sobes.tech
Junior

Kā jūs varat strādāt ar virkni Go valodā?

sobes.tech AI

Atbilde no AI

Go valodā virknes ir nemainīgas baitu secības.

Galvenie veidi, kā strādāt ar virkni:

  1. Izveide:

    // Virknes literals
    s1 := "Hello, Go!"
    
    // No baitu masīva
    byteArray := []byte{'H', 'e', 'l', 'l', 'o'}
    s2 := string(byteArray)
    
  2. Konkatenācija:

    s3 := "World"
    result := s1 + " " + s3 // Izmantojot + operatoru
    

    Lielam konkatenāciju skaitam ir efektīvāk izmantot strings.Builder:

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

    • Baitos:
      byteLength := len(s1)
      
    • Simbolos (rune):
      runeLength := utf8.RuneCountInString(s1) // Prasa importēt "unicode/utf8"
      
  4. Piekļuve simboliem (rune) un iterācija: Go virknes sastāv no baitiem, bet ar range tie tiek dekodēti uz rune (Unicode kodu punktiem).

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

    Tieša pieeja pēc indeksa atgriež baitu, ne rune:

    b := s1[0] // Atgriež baitu 'H'
    
  5. Pārveidošana:

    • Uz baitu masīvu:
      byteSlice := []byte(s1)
      
    • Uz rune masīvu:
      runeSlice := []rune(s1)
      
  6. strings pakotne: Nodrošina daudz noderīgu funkciju darbam ar virkni:

    • strings.Contains(s, substr): Pārbauda, vai ir podvirkne.
    • strings.HasPrefix(s, prefix): Pārbauda, vai virkne sākas ar norādītu prefiksu.
    • strings.HasSuffix(s, suffix): Pārbauda, vai virkne beidzas ar norādītu sufiksu.
    • strings.Index(s, substr): Meklē pirmo parādīšanos podvirknē.
    • strings.ReplaceAll(s, old, new): Aizstāj visas parādīšanās.
    • strings.Split(s, sep): Sadalīt virkni pēc atdalītāja.
    • strings.Join(a []string, sep string): Apvieno virkņu masīvu ar atdalītāju.
    • strings.ToLower(s): Pārvērš mazajos burtos.
    • strings.ToUpper(s): Pārvērš lielajos burtos.
    • strings.TrimSpace(s): Noņem tukšos simbolus no sākuma un beigām.
  7. fmt pakotne: Formāta izvadei un ievadei.

  8. strconv pakotne: Pārveido virknes uz skaitliskajiem tipiem un otrādi:

    import "strconv"
    
    i, err := strconv.Atoi("123") // Virkne uz int
    s := strconv.Itoa(i)         // Int uz virkni
    

Nemainīgums virknes ir svarīgs, jo tas nozīmē, ka jebkura operācija, kas šķiet kā virknes modifikācija (piemēram, konkatenācija vai Replace), patiesībā rada jaunu virkni.