Sobes.tech
Junior

Go dilinde dizilerle nasıl çalışılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da dizeler, değiştirilemez bayt dizileridir. Hem UTF-8 metni hem de rastgele ikili verileri temsil edebilirler.

Ana çalışma yöntemleri:

  • Bildirme ve başlatma:

    var s1 string           // Boş dize
    s2 := "merhaba"          // Dize literali ile başlatma
    s3 := `çok satırlı
    dize`                   // Ham dize literali
    
  • Dizenin uzunluğu:

    len(s2) // Bayt cinsinden uzunluk. "merhaba" için 7.
    
  • Baytlara erişim:

    b := s2[0] // İndeksdeki baytı alır. 'm' (UTF-8'de).
    

    Doğrudan baytlara erişim, UTF-8 karakteri almayı garanti etmez.

  • Rünlere (UTF-8 karakterleri) erişim: Dizeleri rünler boyunca yineleyebilirsiniz:

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

    Rün uzunluğu:

    utf8.RuneCountInString(s2) // Rün uzunluğu. "merhaba" için 7.
    
  • Dize birleştirme:

    str1 := "hello"
    str2 := " world"
    result := str1 + str2 // + operatörü ile birleştirme
    

    Çok sayıda diziyi verimli şekilde birleştirmek için strings.Builder kullanın.

    var sb strings.Builder
    sb.WriteString("hello")
    sb.WriteString(" ")
    sb.WriteString("world")
    result := sb.String() // Sonuç dizesini alır
    
  • Dizeler ve bayt/rune dilimlerinin dönüştürülmesi:

    byteslice := []byte(s2)   // Dizeyi bayt dilimine dönüştürür
    rs := []rune(s2)          // Dizeyi rune dilimine dönüştürür
    
    backToString := string(byteslice) // Bayt diliminden dizeye
    backToString = string(rs)         // Rune diliminden dizeye
    
  • strings paketi: Birçok kullanışlı fonksiyon sağlar:

    • Contains, HasPrefix, HasSuffix
    • Index, LastIndex
    • Replace, ToUpper, ToLower, Trim, TrimSpace
    • Split, Join
  • strconv paketi: Dizeleri diğer veri tiplerine (sayılar, booleanler) dönüştürmek ve tersi.

    i, err := strconv.Atoi("123") // Dizeyi int'e dönüştürür
    s := strconv.Itoa(456)        // int'i dizeye dönüştürür
    
  • Değiştirilemezlik: Herhangi bir dizeyi değiştirmeye çalışan işlemler (örneğin, birleştirme) aslında yeni bir dize oluşturur. Bu, sık değişikliklerde performans için önemlidir. Bu durumda, []byte veya strings.Builder kullanmak daha iyidir.