Sobes.tech
Junior

Go dilində sətərlərlə necə işləmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da sətirlər dəyişməz ardıcıllıqlardır. Onlar həm UTF-8 mətnini, həm də istənilən ikili məlumatları təmsil edə bilər.

Əsas işləmə üsulları:

  • İlan və başlanğıc:

    var s1 string           // Boş sətir
    s2 := "salam"            // Sətir literalı ilə başlanğıc
    s3 := `çox sətirli
    sətir`                // Xam sətir literalı
    
  • Sətirin uzunluğu:

    len(s2) // Bayt cinsindən uzunluq. "salam" üçün 5.
    
  • Baytlara giriş:

    b := s2[0] // İndeksdəki bayt. 's' (UTF-8-də).
    

    Birbaşa baytlara giriş UTF-8 simvolunu tam almağı təmin etmir.

  • Rünlara (UTF-8 simvollarına) giriş: Sətirlər rünlar üzrə təkrarlanabilir:

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

    Uzunluğu rünlarda:

    utf8.RuneCountInString(s2) // Rünların sayı. "salam" üçün 5.
    
  • Sətirlərin birləşdirilməsi:

    str1 := "salam"
    str2 := " dünya"
    result := str1 + str2 // + operatoru ilə birləşdirmə
    

    Çox sayda sətiri səmərəli birləşdirmək üçün strings.Builder istifadə edin.

    var sb strings.Builder
    sb.WriteString("salam")
    sb.WriteString(" ")
    sb.WriteString("dünya")
    result := sb.String() // Nəticə sətiri
    
  • Sətirlər və bayt/rune dilimləri arasında çevirmə:

    byteslice := []byte(s2)   // Sətiri bayt diliminə çevirmək
    rs := []rune(s2)          // Sətiri rune diliminə çevirmək
    
    backToString := string(byteslice) // Bayt dilimindən sətir
    backToString = string(rs)         // Rune dilimindən sətir
    
  • strings paketi: Bir çox faydalı funksiyalar təqdim edir:

    • Contains, HasPrefix, HasSuffix
    • Index, LastIndex
    • Replace, ToUpper, ToLower, Trim, TrimSpace
    • Split, Join
  • strconv paketi: Sətirləri digər məlumat tiplərinə (rəqəmlər, booleanlər) çevirmək və əksinə.

    i, err := strconv.Atoi("123") // Sətiri int-ə çevirmək
    s := strconv.Itoa(456)        // Int-i sətirə çevirmək
    
  • Dəyişməzlik: Hər hansı bir əməliyyat, sətiri dəyişdiyinə bənzər olsa da (məsələn, birləşdirmə), əslində yeni sətir yaradır. Bu, tez-tez dəyişikliklər zamanı performans üçün vacibdir. Bu halda, []byte və ya strings.Builder istifadə etmək daha yaxşıdır.