Sobes.tech
Junior

Go тілінде жолдармен қалай жұмыс істей аласыз?

sobes.tech AI

AI-дан жауап

Go тілінде жолдар өзгермейтін байттар тізбегі болып табылады.

Жолдармен жұмыс істеудің негізгі тәсілдері:

  1. Жасау:

    // Жолдық литерал
    s1 := "Hello, Go!"
    
    // Байттар слайсынан
    byteArray := []byte{'H', 'e', 'l', 'l', 'o'}
    s2 := string(byteArray)
    
  2. Қосылу:

    s3 := "World"
    result := s1 + " " + s3 // + операторы арқылы
    

    Үлкен көлемдегі қосылулар үшін тиімдірек strings.Builder қолдану:

    import "strings"
    
    var sb strings.Builder
    sb.WriteString("Hello")
    sb.WriteString(", ")
    sb.WriteString("World!")
    result2 := sb.String()
    
  3. Ұзындығы:

    • Байттарда:
      byteLength := len(s1)
      
    • Символдарда (рунах):
      runeLength := utf8.RuneCountInString(s1) // "unicode/utf8" кітапханасын қосу керек
      
  4. Белгілеуге (руна) қол жеткізу және қайталау: Go жолдары байттардан тұрады, бірақ range көмегімен қайталау кезінде олар рунаға (Unicode код нүктелері) декодталады.

    import "fmt"
    
    for index, runeValue := range s1 {
        fmt.Printf("Индекс: %d, Руна: %c, Тәртібі: %T\n", index, runeValue, runeValue)
    }
    

    Тікелей индекс арқылы қол жеткізу байтты қайтарса, руна емес:

    b := s1[0] // 'H' байтын қайтарады
    
  5. Өзгертуге болмайтын:

    • Байттар слайсіне айналдыру:
      byteSlice := []byte(s1)
      
    • Рундар слайсіне айналдыру:
      runeSlice := []rune(s1)
      
  6. strings пакеті: Жолдармен жұмыс істеуге арналған көптеген пайдалы функцияларды ұсынады:

    • strings.Contains(s, substr): Құрамында бар-жоғын тексеру.
    • strings.HasPrefix(s, prefix): Префикс бар-жоғын тексеру.
    • strings.HasSuffix(s, suffix): Суффикс бар-жоғын тексеру.
    • strings.Index(s, substr): Бірінші кездесуді табу.
    • strings.ReplaceAll(s, old, new): Барлық ауыстырулар.
    • strings.Split(s, sep): Жолды бөлшектеу.
    • strings.Join(a []string, sep string): Жолдар сызбасын біріктіру.
    • strings.ToLower(s): Төменгі регистрге ауыстыру.
    • strings.ToUpper(s): Жоғары регистрге ауыстыру.
    • strings.TrimSpace(s): Басты және соңындағы бос орындарды жою.
  7. fmt пакеті: Форматталған шығару және жолдарды оқу үшін.

  8. strconv пакеті: Жолдарды сандық типтерге және керісінше түрлендіру үшін.

    import "strconv"
    
    i, err := strconv.Atoi("123") // Жолды бүтін санға айналдыру
    s := strconv.Itoa(i)         // Бүтін санды жолға айналдыру
    

Жолдардың өзгермейтіндігі маңызды, және ол жолды өзгертуге тырысатын кез келген операция (мысалы, қосу немесе Replace) жаңа жолды құруды білдіреді.