Junior
Go tilida satrlar qanday ishlaydi?
sobes.tech AI
AIdan javob
Go'da satrlar o'zgarmas baytlar ketma-ketligidir. Ular "baytli kesim" ([]byte) sifatida ifodalanadi va o'zgarmaslik kafolatlanadi.
Asosiy xususiyatlar:
- O'zgarmaslik: Satr yaratilgandan so'ng, uni o'zgartib bo'lmaydi. Uni o'zgartishga o'xshash harakatlar aslida yangi satr yaratadi.
- Taqdimot: Standart holda, Go'da satrlar UTF-8 kodlangan matnni ifodalaydi. Ammo ular faqat baytlar ketma-ketligi; UTF-8 sifatida talqin qilish runlar bilan ishlashda amalga oshiriladi.
- Runlar: Go'da Unicode belgilar
runeturi bilan ifodalanadi, buint32ning takroridir.rangeyordamida satr bo'ylab iteratsiya UTF-8 ni avtomatik ravishda dekodlaydi va runlar hamda ularning boshlang'ich indekslarini taqdim etadi. - Uzunlik:
len(s)funktsiyasi satrdagi baytlar sonini qaytaradi, belgilar (runlar) sonini emas. Runlar sonini olish uchunutf8.RuneCountInString(s)yokirangebilan iteratsiya qilish mumkin. - Qo'shish: Satrlarni birlashtirish uchun
+operatoridan foydalaniladi. Bu yangi satr yaratadi. Ko'p satrlarni samarali birlashtirish uchunstrings.Buildertavsiya etiladi.
Misollar:
// Satrni e'lon qilish
str := "Hello, 世界"
// Satrning uzunligi (baytlar bilan)
byteLen := len(str) // 13 (H(1) e(1) l(1) l(1) o(1) ,(1) (1) 世(3) 界(3))
// Runlar bo'yicha iteratsiya
runeCount := 0
for index, runeValue := range str {
// index - runa boshlanish indeksi baytlarda
// runeValue - runa
runeCount++
// fmt.Printf("Indeks: %d, Runa: %c (Qiymat: %d)\n", index, runeValue, runeValue)
}
// rune soni (9)
// Baytga indeks bo'yicha kirish
// E'tibor bering: bu bayt, belgilar emas!
// byteAtIndex := str[0] // 'H'
// byteAtIndex := str[7] // '世' belgisining boshlang'ich bayti
// Satrlarni qo'shish
newStr := str + "!"
// Samarali qo'shish uchun strings.Builder ishlatish
// import "strings"
var builder strings.Builder
builder.WriteString("Hello, ")
builder.WriteString("World")
efficientStr := builder.String() // "Hello, World"