Sobes.tech
Junior

Kuidas töötada stringidega Go keeles?

sobes.tech AI

Vastus AI-lt

Go keeles stringid on muutumatud baitide jadas. Nad võivad esitada nii UTF-8 teksti kui ka mis tahes binaarandmeid.

Põhitegevused:

  • Deklaratsioon ja initsialiseerimine:

    var s1 string           // Tühi string
    s2 := "tere"            // Initsialiseerimine stringi literaaliga
    s3 := `mitme rida
    string`             // Toores stringi literaal
    
  • Stringi pikkus:

    len(s2) // baitide arv. "tere" puhul on see 4.
    
  • Juurdepääs baitidele:

    b := s2[0] // baiti saamine indeksiga. Tagastab 't' (UTF-8).)
    

    Otse baitidele juurdepääs ei taga UTF-8 sümboli saamist.

  • Juurdepääs rünadele (UTF-8 sümbolitele): Stringe saab iteratsiooniga rünade kaupa:

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

    Stringi pikkus rünades:

    utf8.RuneCountInString(s2) // Pikkus rünades. "tere" puhul on see 4.
    
  • Stringide ühendamine:

    str1 := "tere"
    str2 := " maailm"
    result := str1 + str2 // Ühendamine operaatoriga +
    

    Tõhusamaks ühendamiseks suure hulga stringide puhul kasutage strings.Builder:

    var sb strings.Builder
    sb.WriteString("tere")
    sb.WriteString(" ")
    sb.WriteString("maailm")
    result := sb.String() // Tulemuse string
    
  • Stringide ja baitide/rünade vahetus:

    byteslice := []byte(s2)   // String baitideks
    rs := []rune(s2)          // String rünadeks
    
    backToString := string(byteslice) // baitide stringiks
    backToString = string(rs)         // rünade stringiks
    
  • strings moodul: Pakub palju kasulikke funktsioone:

    • Contains, HasPrefix, HasSuffix
    • Index, LastIndex
    • Replace, ToUpper, ToLower, Trim, TrimSpace
    • Split, Join
  • strconv moodul: Stringide teisendamine teisteks andmetüüpideks (arvud, booleanid) ja tagasi.

    i, err := strconv.Atoi("123") // String arvuks
    s := strconv.Itoa(456)        // Arv stringiks
    
  • Muutumatud: Kõik operatsioonid, mis näivad stringi muutmisena (näiteks ühendamine), loovad tegelikult uue stringi. See on oluline jõudluse jaoks sagedaste muudatuste korral. Sellistel juhtudel on parem kasutada []byte või strings.Builder.