Sobes.tech
Junior

Go dilində sətirlərlə necə işləyə bilərsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da sətirlər dəyişməz ardıcıllıqlardır.

Sətirlərlə işləməyin əsas üsulları:

  1. Yaradıcılıq:

    // Sətir literalı
    s1 := "Hello, Go!"
    
    // Bayt massivindən
    byteArray := []byte{'H', 'e', 'l', 'l', 'o'}
    s2 := string(byteArray)
    
  2. Birgə yazma:

    s3 := "World"
    result := s1 + " " + s3 // + operatorundan istifadə
    

    Çox sayda birgə yazma üçün strings.Builder daha səmərəlidir:

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

    • Baytlarda:
      byteLength := len(s1)
      
    • Simvollarda (runes):
      runeLength := utf8.RuneCountInString(s1) // "unicode/utf8" import etməyi tələb edir
      
  4. Simvollara (runes) giriş və iterasiya: Go-da sətirlər baytlardan ibarətdir, amma range ilə iterasiya edildikdə, onlar Unicode kod nöqtələrinə (runes) deşifrə olunur.

    import "fmt"
    
    for index, runeValue := range s1 {
        fmt.Printf("İndeks: %d, Rune: %c, Tip: %T\n", index, runeValue, runeValue)
    }
    

    Birbaşa indeksə giriş bayt qaytarır, rune deyil:

    b := s1[0] // 'H' baytını qaytarır
    
  5. Konvertasiya:

    • Bayt diliminə:
      byteSlice := []byte(s1)
      
    • Rune diliminə:
      runeSlice := []rune(s1)
      
  6. strings paketi: Sətirlərlə işləmək üçün çox faydalı funksiyalar təqdim edir:

    • strings.Contains(s, substr): Alt sətirin olub-olmadığını yoxlayır.
    • strings.HasPrefix(s, prefix): Sətirin prefiks ilə başlayıb- başlamadığını yoxlayır.
    • strings.HasSuffix(s, suffix): Sətirin sonek ilə bitib-bitmədiyini yoxlayır.
    • strings.Index(s, substr): Alt sətirin ilk tapıldığı yeri tapır.
    • strings.ReplaceAll(s, old, new): Bütün uyğun gələnləri dəyişir.
    • strings.Split(s, sep): Sətiri ayırır.
    • strings.Join(a []string, sep string): Sətirləri birləşdirir.
    • strings.ToLower(s): Kiçik hərflərə çevirir.
    • strings.ToUpper(s): Böyük hərflərə çevirir.
    • strings.TrimSpace(s): Baş və sondakı boşluqları silir.
  7. fmt paketi: Formatlaşdırılmış çıxış və giriş üçün.

  8. strconv paketi: Sətirləri sayısal tiplərə və əksinə çevirmək üçün:

    import "strconv"
    
    i, err := strconv.Atoi("123") // String-dən int-ə
    s := strconv.Itoa(i) // Int-dən string-ə
    

Sətirlərin dəyişməzliyi vacibdir və bu, hər hansı bir əməliyyatın (məsələn, birləşdirmə və ya Replace) əslində yeni sətir yaratdığını göstərir.