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") // Аз сатр ба int
    s := strconv.Itoa(i)         // Аз int ба сатр
    

Номутобиқ будани сатрҳо муҳим аст ва маъно дорад, ки ҳар коре, ки ба назар мерасад, ки тағир додани сатр (масалан, ҳамҷоя кардан ё Replace) дар асл як сатр нав эҷод мекунад.