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.Builderkullanı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 -
stringspaketi: Birçok kullanışlı fonksiyon sağlar:Contains,HasPrefix,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
strconvpaketi: 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,
[]byteveyastrings.Builderkullanmak daha iyidir.